Последовательность выполнения RewriteRule

SQ
На сайте с 17.10.2011
Offline
75
SPQ
929

Вопрос в возможности выполнения преобразования:

RewriteRule ^information.php?search_rtype=2$ information.html [R=301,L]

Вероятно, еще не до конца разобрался в преобразованиях, у меня не производится вызов information.html , а продолжаются попытки вызова information.php .

Что нужно сделать чтобы выполнилось преобразование?

siv1987
На сайте с 02.04.2009
Offline
427
#1

Похоже, что вы даже синтаксис перепутали

RewriteRule ^information\.html information.php?search_rtype=2 [L]

Флаг R это редирект, не преобразование.

SQ
На сайте с 17.10.2011
Offline
75
SPQ
#2
siv1987:
Похоже, что вы даже синтаксис перепутали

RewriteRule ^information\.html information.php?search_rtype=2 [L]

Флаг R это редирект, не преобразование.

Напутать мог и кажется напутал , не указал \ перед точкой, но то что предлагаете Вы это показ страницы information.php?search_rtype=2 при запросе information.html .

Мне нужно строго наоброт, чтобы при запросе information.php?search_rtype=2 выводилась страница information.html

[Удален]
#3
SPQ:
Мне нужно строго наоброт

Дык поменяйте местами... ))

SPQ:
выводилась страница information.html

А она (information.html) у вас есть в корне

SQ
На сайте с 17.10.2011
Offline
75
SPQ
#4

И в корне есть и местами расставлял как надо, с этого начал, но почему-то сначала идет поиск возможности выполнения чего-нибудь из левой части RewriteRule и если это что-нибудь там находится, то преобразрвание не производится. Если слева не файл *.php , а что-то бессмысленное, как в учебниках htaccess, то все работает исправно.

siv1987
На сайте с 02.04.2009
Offline
427
#5
идет поиск возможности выполнения чего-нибудь из левой части RewriteRule и если это что-нибудь там находится, то преобразрвание не производится.

Синтаксис директивы

RewriteRule pattern substitution

если pattern соответствует REQUEST_URI выполняется преобразование substitution. В rewriteRule не обрабатывается QUERY_STRING, т.е. index.php?param == index.php

для вашего примера

RewriteEngine On

RewriteCond %{QUERY_STRING} ^search_rtype=2

RewriteRule ^information.php$ information.html [L]

sergek
На сайте с 04.08.2007
Offline
109
#6
SPQ:
Мне нужно строго наоброт, чтобы при запросе information.php?search_rtype=2 выводилась страница information.html

RewriteRule не отрабатывает аргументы, переданные в ссылке после знака "?".

Вам стоит поступить так:


RewriteCond %{QUERY_STRING} ^search_rtype=2$ [NC]
RewriteRule ^information.php /information.html? [L,R=301]


---------- Добавлено 17.10.2012 в 21:58 ----------

Знак вопроса после information.html? во второй строке нужен, чтобы параметры запроса из входной строки в результирующей отбрасывались, если вам это, конечно, надо.
подпись как подпись
SQ
На сайте с 17.10.2011
Offline
75
SPQ
#7

Спасибо, теорию понял, сделал как написали, но все равно не работает. При обращениях идет попытка вызова information.php ...

sergek
На сайте с 04.08.2007
Offline
109
#8

Проверил у себя - работает.

Либо что-то пишете не так в строке запроса, либо раньше есть другие отрабатывающие правила, либо ещё что.

SQ
На сайте с 17.10.2011
Offline
75
SPQ
#9

Вот все что предшествует:

DirectoryIndex index.php

AddDefaultCharset windows-1251

ErrorDocument 404 http://сайт.ru/index.php

RemoveHandler .html .htm

AddType application/x-httpd-php .php .htm .html

Options +ExecCGI +FollowSymLinks -Indexes

AddHandler cgi-script .cgi

RewriteEngine on

SQ
На сайте с 17.10.2011
Offline
75
SPQ
#10
sergek:
Проверил у себя - работает.
Либо что-то пишете не так в строке запроса, либо раньше есть другие отрабатывающие правила, либо ещё что.

Вот это "еще что" и оказалось , одна из букв в substitution оказалась русской, как она туда попала - х.з. Моя дурная голова наказана , всем спасибо за помощь!

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