Перенаправить домен без www, но не IP

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

У меня есть несколько сайтов на одном сервере, то есть: хост по умолчанию (виртуальный) и один виртуальный хост с именем сервера и несколькими псевдонимами серверов, которые отлично работают. Я предпочитаю, чтобы имена доменов начинались с «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, я пытался выяснить, как другие люди решили эту проблему, но безуспешно.


person Techek    schedule 24.05.2011    source источник


Ответы (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]
person rocksfrow    schedule 26.06.2011