2015-04-13 3 views
0

В настоящее время здесь мой Htaccess код:Как остановить «www» htaccess перенаправить добавление на второй «www»?

RewriteEngine On 

RewriteCond %{HTTPS} !on 
RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI} 

RewriteCond %{query_string} (^|&)p=contact$ 
RewriteRule (.*) /contact/ 

RewriteCond %{query_string} ^body= 
RewriteRule (.*) $1? [R=301,L] 

Так что код делает во время HTML запроса в URL, любые запросы, которые есть «р = контакт» будет перенаправлен на страницу контактов. Хотя любой запрос, содержащий слово «тело», будет удален.

Теперь код работает блестяще, если я нахожусь на моем сайте (например: example.com).

Однако, если я попытаюсь напечатать www.example.com, он будет загружен как www.www.example.com. Он имеет двойные www. Это можно как-то исправить?

+0

о, да, я забыл упомянуть, что первая строка rewritecond перенаправляет не https на https-ссылки. Если бы я напечатал www.example.com, он будет перенаправлен на https://www.example.com просто отлично. Однако, если ссылка www.example.com/?body=hi&p=contact, она становится https: // www.www.example.com/contact/ – Klaus

+0

вы пытались удалить «www.». отсюда: RewriteRule (. *) https: //www.% {HTTP_HOST}% {REQUEST_URI} – dgig

+0

вы должны сначала перенаправить все, кроме www, на www. затем закодируйте любые правила, которые вы хотите. как сейчас, это полный беспорядок. – Sharky

ответ

0

Хорошо, мне удается решить эту проблему.

После нескольких часов вмешиваться в это, я понимаю, что если я изменю% {HTTP_HOST}% на свое доменное имя, оно делает его отлично.

Странно.

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