Перенаправить www2, не www и альтернативный домен на www.domain.com - PullRequest
0 голосов
/ 10 февраля 2012

Я пытаюсь перенаправить следующее:

domain.com => www.domain.com
www2.domain.com => www.domain.com
www.altdomain.com => www.domain.com
altdomain.com => www.domain.com

Мой файл .htaccess по большей части работает, но в следующих случаях происходит сбой:

www2.domain.com/about/ => www.domain.com/about/
www2.altdomain.com/about/ => www.domain.com/about/
altdomain.com/about/ => www.domain.com/about/

Это мое.файл htaccess.Что я делаю не так?

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

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

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

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

Спасибо!

1 Ответ

0 голосов
/ 10 февраля 2012

Ваш cond (1) соответствует любому хосту, не начинающемуся с www., поэтому ваши тестовые векторы делают так, как вы говорите.

Переместите его в конец, чтобы карты bupipedream имели приоритет.

Я также заметил, что вы меняете свое регулярное выражение в правилах.В этом случае ^(.*)$ - это то же самое, что и (.*), но всегда безопаснее привязывать начало поиска, и, поскольку. * Жадный, вам не нужен конечный $, но ^(.*)$ проясняет ваши намерения.

...