Странное перенаправление с htaccess mod_rewrite

В моем .htaccess у меня есть такие строки:

RewriteEngine On
RewriteCond %{http_host} ^test.ru [nc]
RewriteRule ^(.*)$ http://www.test.ru/$1 [r=301,nc]
RewriteBase /
RewriteRule ^(.*)/$ index.php?string=$1 [NC,L]

поэтому хочу поменять test.ru на www.test.ru

а также передать www.test.ru/my_string_value/ в $ _GET [‘string’]

(например, с этого URL www.test.ru/ru/pages/id/), взламывая этот ru / pages / 888, получая мои параметры (lang = ru, cat = pages, id = 888).

Когда я пытаюсь проверить www добавление части (запись test.ru должна сделать www.test.ru), получаю это:

http://www.test.ru/index.php?string=http://www.test.ru

С получением параметров все в порядке!

И еще одна интересная вещь! После комментирования строк

#RewriteEngine On
#RewriteCond %{http_host} ^test.ru [nc]
#RewriteRule ^(.*)$ http://www.test.ru/$1 [r=301,nc]
#RewriteBase /
#RewriteRule ^(.*)/$ index.php?string=$1 [NC,L]

получить то же самое!

Что случилось.

0

Решение

У вас есть некоторые вещи в неправильном порядке, но вы, вероятно, кэшированы. Браузер будет кешировать 301 переадресацию. Очистите кеш браузера или попробуйте в другом браузере. Также используйте 302 во время тестирования. Затем измените на 301, когда все работает. И вы должны использовать L флаг на перенаправлениях также.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^test\.ru [NC]
RewriteRule ^(.*)$ http://www.test.ru/$1 [R=302,NC,L]
RewriteRule ^(.*)/?$ index.php?string=$1 [NC,L]
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]