Перенаправить домен не-www, но не IP-адреса - PullRequest
0 голосов
/ 24 мая 2011

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

У меня есть несколько сайтов на одном сервере, то есть: виртуальный хост по умолчанию и один VirtualHost с ServerName и несколько ServerAlias, которые работают отлично. Я предпочитаю, чтобы доменные имена начинались с "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 Ответ

1 голос
/ 26 июня 2011

Это потому, что ваше состояние только проверяет, начинается ли оно с 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]
...