mod_rewrite перенаправляет на www.example.com// при попытке получить доступ к example.com

Если я понимаю Вас правильно (особенно я не знаю то, что Вы означаете с принудительным переписывать), RewriteBase для Вас.

BTW: не используйте материал как domain.com :-)

0
задан 20 January 2012 в 15:08
4 ответа

Попробуйте это:

RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule (.*) http://www.example.com$1 [R=301,L]
1
ответ дан 4 December 2019 в 12:48

Проблема в том, что . * включает косую черту, которая уже находится в URL. Затем вы отправляете перенаправление на http://www.example.com/$1 , которое включает еще одну косую черту.

Одно из следующих действий решит вашу проблему:

RewriteRule (.*) http://www.example.com$1 [R=301,L]

или

RewriteRule /(.*) http://www.example.com/$1 [R=301,L]

Это не будет происходят внутри блока или в файле .htaccess , потому что в обоих этих случаях в URI нет ведущей косой черты.

1
ответ дан 4 December 2019 в 12:48

Я никогда не слышал о протоколе hxxp .

Ваш виртуальный хост отвечает на запросы example.com и www .example.com .

Исправить просто: добавьте отдельный виртуальный хост для www.example.com и удалите ServerAlias ​​с example.com.

Затем перенаправьте постоянный / http://www.example.com/

Обратите внимание на преобладание косой черты как в исходном, так и в целевом списке - это ваша ошибка.

Я не собираюсь показывать вам, как исправить rewiterule, поскольку вам не следует его использовать.

0
ответ дан 4 December 2019 в 12:48

Вы можете легко избавиться от этого двойного /, позволив части директивы регулярного выражения "съесть" его:

RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L]
1
ответ дан 4 December 2019 в 12:48

Теги

Похожие вопросы