NitroDev

Рейтинг
1
Регистрация
11.04.2007
Dr Shumiloff:
Вот что записалось в лог:
...
127.0.0.1 - - [19/Apr/2007:13:39:18 +0400] [localhost/sid#7b3880][rid#8497b0/initial] (4) RewriteCond: input='query=123' pattern='^q=([0-9]+)$' => not-matched

...

Ну вот и ответ. Если ты запрашиваешь http://localhost/search.html?query=432 тогда RewriteCond должен быть следущим:

RewriteCond %{QUERY_STRING} ^query=([0-9]+)$

а если http://localhost/search.html?q=432, тогда

RewriteCond %{QUERY_STRING} ^q=([0-9]+)$

ок. тогда все по шагам:

Вот как все примерно должно быть настроено, чтобы все работало )

Настройки httpd.conf в Apache:

<VirtualHost 127.0.0.1:80>

RewriteEngine On
RewriteLogLevel 4
RewriteLog "c:/localhost/logs/rewrite.log"

DocumentRoot "c:/localhost/html"

<Directory c:/localhost/html >
AllowOverride All
Order deny,allow
Allow from all
</Directory>

</VirtualHost>

В c:/localhost/html должны лежать файлы: .htaccess и index.php (контент файлов выше). Также должен быть создан каталог c:/localhost/logs для хранения лога mod_rewrite.

Перегружаем Apache, в браузере вбиваем http://127.0.0.1/search.html?q=111

и получаем

array(2) { ["mode"]=>  string(6) "search" ["q"]=>  string(3) "111" }

Если что, то лезем в лог реврайта и смотрим, что не так.

Остальные правила не влияют на это преобразование. Копаем дальше :)

Какой url запрашиваешь (полностью)?

И если есть доступ к логам mod_rewrite, то что в них пишется?

Dr Shumiloff:
Да, конечно, в корне.

Тогда все должно работать в лучшем виде 😕 В .htaccess еще есть какие-нибудь директивы?

Файлы .htaccess и index.php находятся в одном каталоге?

Тогда либо mod_rewrite не подключен, либо не существует файл index.php

Options +FollowSymLinks

RewriteEngine On
RewriteCond %{QUERY_STRING} ^q=([0-9]+)$
RewriteRule ^search\.html$ index.php?mode=search&q=%1 [L]

И создай файл index.php с содержанием <?php print_r($_GET); ?> и положи его в тот же каталог где и .htaccess.

Попробуй так:

RewriteCond %{QUERY_STRING} ^q=([0-9]+)$ 

RewriteRule ^search\.html$ index.php?mode=search&q=%1 [L]

Используй JOIN для объединения таблиц по cat_id, тем самым сведешь все к одному запросу.

zzzzz:
К сожалению я не такой продвинутый в таких делах мастер, но возникла мысль, как сделать для сайта собственную страницу ошибок 404, если сайт не является основным в аккаунте и вообще возможно ли это 😕

Пиши в .htaccess

ErrorDocument 404 /my_error_page.html

Сделай схожую схему построения статических URL и поставь 301 редирект со старых URL на новые.

12
Всего: 12