В моем .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]
получить то же самое!
Что случилось.
У вас есть некоторые вещи в неправильном порядке, но вы, вероятно, кэшированы. Браузер будет кешировать 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]
Других решений пока нет …