Перенаправить домен без www на www, сохранив постановку - PullRequest
1 голос
/ 21 января 2011

У меня есть два домена: www.example.com и staging.example.com (оба размещены в одной коробке).

Я хотел бы всегда перенаправлять example.com на www.example.com, но когда я использую решения из других потоков SO, это нарушает промежуточный домен.

Может ли кто-нибудь указать мне правильное направление?

Спасибо!

ОБНОВЛЕНИЕ: распространяется ли это на https? Если нет, что я должен сделать, чтобы это работало?

Ответы [ 2 ]

2 голосов
/ 21 января 2011

Вам нужно это в вашем файле .htaccess в корне вашей директории:

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

магия заключается в ^, что указывает на то, что он должен переписать только URL, если адрес НАЧИНАЕТСЯ с example.com,Это исключает staging.example.com из цикла.

В случае, если вам нужно сделать это и для HTTPS, просто добавьте следующую строку в условия и настройте ее для своих нужд (= on или! = On):

RewriteCond $ {HTTPS} = on

Что дает вам:

RewriteCond ${HTTPS} =on    
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

Да, и не забудьте поставить RewriteEngine наверхуваш файл .htaccess

0 голосов
/ 21 января 2011
RewriteEngine On

# not HTTPS
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

# HTTPS
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

Не должно быть никакого конфликта с staging.example.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...