2011-05-24 3 views
0

Я ищу способ переписать не-www-домены в www-домены и в то же время не перенаправлять прямые IP-запросы.Переадресовать домен не-www, но не IP-адрес

У меня есть несколько сайтов на одном сервере - то есть: по умолчанию (виртуальный) хост и один VirtualHost с именем ServerName и несколькими ServerAlias'es, которые работают отлично. Я предпочитаю, чтобы имена доменов начинались с «www». Так что я взломал следующий код вместе, который прекрасно работает:

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

Он не обрабатывает протокол HTTPS, но самая большая проблема в том, что запросы на сервер-IP также переписаны, например. «123.45.67.8» - «www.123.45.67.8». Я могу добавить строку ниже, чтобы решить эту проблему:

RewriteCond %{HTTP_HOST} !^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ 

... но эффективно ли это? А как насчет IPv6?

Будучи не mod_rewrite-wiz, я пытался выяснить, как другие люди решили эту проблему, но не повезло.

ответ

1

Это потому, что ваше состояние только проверка, если она начинается с WWW, попробуйте это вместо того, чтобы (я оставил дополнительный код HTTPS):

RewriteCond %{HTTP_HOST} ^(yourdomain|thisdomain|thatdomain)\.com 
#RewriteCond %{HTTPS} =on 
#RewriteRule .* https://www.%{SERVER_NAME}%{REQUEST_URI} [R,L] 
RewriteRule .* http://www.%{SERVER_NAME}%{REQUEST_URI} [R,L] 
Смежные вопросы