Проблема с .htaсcess

12
DS
На сайте с 11.05.2006
Offline
11
1079

Требуется решить тривиальную задачу: перенаправление запроса типа search.html?q=111 на index.php?mode=search&q=111

Пробовал варианты:

RewriteCond %{REQUEST_URI} /search.html [NC]

RewriteRule ^/search.html?q=([.]+) /index.php?mode=search&q=$1 [T=application/x-httpd-cgi,L]

RewriteCond %{QUERY_STRING} q=(.+) [NC]

RewriteRule ^search.html /index.php?mode=search&q=%1 [T=application/x-httpd-cgi,L]

RewriteCond %{QUERY_STRING} q=(.*) [NC]

RewriteRule ^search.html /index.php?mode=search&q=%1 [T=application/x-httpd-cgi,L]

RewriteCond %{REQUEST_URI} ^search.html [NC]

RewriteRule ^search.html?q=(.*) /index.php?mode=search&q=$1 [T=application/x-httpd-php]

и т.д. Практически во всех случаях выдается ошибка "Not Found. The requested URL /search.html was not found on this server". При этом остальные редиректы работают.

В чем может быть проблема? И почему не работают приведенные варианты?

Пишу качественные и недорогие оптимизированные статьи и пресс-релизы: 4 wmz/1000 зн. (/ru/forum/119691) Сайты на базе CMS Joomla от 150 wmz.
ND
На сайте с 11.04.2007
Offline
1
#1

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

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

RewriteRule ^search\.html$ index.php?mode=search&q=%1 [L]
http://apachedev.ru (http://apachedev.ru)
DS
На сайте с 11.05.2006
Offline
11
#2
NitroDev:
Попробуй так:

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

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

Not Found

The requested URL /search.html was not found on this server.

ND
На сайте с 11.04.2007
Offline
1
#3

Тогда либо 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.

DS
На сайте с 11.05.2006
Offline
11
#4
NitroDev:
Тогда либо mod_rewrite не подключен, либо не существует файл index.php

Для примера, этот кусок отрабатывает отлично:

RewriteCond %{REQUEST_URI} (\sitemap.html)$ [NC]

RewriteRule ^(.*)$ /index.php?mode=sitemap [T=application/x-httpd-php]

ND
На сайте с 11.04.2007
Offline
1
#5

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

DS
На сайте с 11.05.2006
Offline
11
#6
NitroDev:
Файлы .htaccess и index.php находятся в одном каталоге?

Да, конечно, в корне.

ND
На сайте с 11.04.2007
Offline
1
#7
Dr Shumiloff:
Да, конечно, в корне.

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

DS
На сайте с 11.05.2006
Offline
11
#8
NitroDev:
Тогда все должно работать в лучшем виде 😕 В .htaccess еще есть какие-нибудь директивы?

RewriteEngine on

Options FollowSymLinks

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

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

RewriteCond %{REQUEST_URI} ^([^,]+),i([^,]+),ci([^.]+).(.*)$ [NC]

RewriteRule ^([^,]+),i([^,]+),ci([^.]+).(.*)$ /index.php?mode=item&id=$2&ci=$3&t=$1 [T=application/x-httpd-php]

RewriteCond %{REQUEST_URI} ^([^,]+),ci([^,]+),pn([^.]+).(.*)$ [NC]

RewriteRule ^([^,]+),ci([^,]+),pn([^.]+).(.*)$ /index.php?mode=category&ci=$2&pn=$3&t=$1 [T=application/x-httpd-php]

RewriteCond %{REQUEST_URI} (\sitemap.html)$ [NC]

RewriteRule ^(.*)$ /index.php?mode=sitemap [T=application/x-httpd-php]

ND
На сайте с 11.04.2007
Offline
1
#9

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

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

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

DS
На сайте с 11.05.2006
Offline
11
#10
NitroDev:
Какой url запрашиваешь (полностью)?

Гоняю в локале: http://localhost/search.html?query=432

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

Не пишется :(

Не знаю, как настроить. Добавление директивы RewriteLog гонит ошибку... :(

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий