2015-12-09 1 views
2

У меня есть следующее правило в .htaccess для перенаправления с domain.tld на www.domain.tld, и он работает нормально.http на www при сохранении подпапки?

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

Однако при попытке получить доступ domain.tld/форум, я попадаю в www.domain.tld

Как я могу переадресовать все не-WWW на WWW, сохраняя при этом все, что вложенная посетитель находится в ?

ответ

2

Использование REQUEST_URI переменной:

RewriteEngine On 

RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

%{REQUEST_URI} будет иметь полный запрос URI, а не относительный путь (от текущего каталога) захватили в $1

+0

такое же поведение, что и исходный код, domain.tld/форум перенаправляет www.domain.tld – aron9forever

+0

Убедитесь, что это первое правило в вашем htaccess. Очистите кеш браузера и протестируйте его в инструменте Chrome dev с отключенным кэшированием, чтобы узнать, какие '301' вы получаете. – anubhava

+0

Хорошо, я использовал firefox до сих пор, я сначала попытался с Chrome, и правило не работало вообще. Файл htaccess находится в корневом каталоге, и, поскольку я никогда не посещал его, но напрямую посещал форум, он не перенаправлялся на www. Теперь я также добавил ваш код в другой .htaccess внутри/forum, и он работает нормально. Однако в firefox я все еще перенаправляюсь из/forum в root. После очистки кеша он работает нормально. Есть ли способ исправить это без очистки кеша? Из-за этого я делал модификации в реальном времени, и некоторые пользователи теперь могут быть пойманы в ловушку. – aron9forever

 Смежные вопросы

  • Нет связанных вопросов^_^