Лучший способ избавиться от www. а также - PullRequest
0 голосов
/ 04 июня 2010

Я хочу, чтобы весь трафик пошел на:

http://www.domain.com

http://domain.com

|

V

http://main.domain.com

Я могу использовать .htaccess или что-то в PHP, я использую Zend Framework. Обратите внимание, у меня также есть:

http://sub1.domain.com

http://sub2.domain.com

1024 * ТНХ *

Ответы [ 4 ]

6 голосов
/ 04 июня 2010

Эти правила сохранят полную URI

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

PS: я не могу придумать, как сделать вторую строку более переносимой без явной спецификации домена. Я буду признателен тому, кто сможет меня поправить.

1 голос
/ 04 июня 2010

То, что вы пытаетесь сделать, это функциональность веб-сервера. Так что пусть веб-сервер обрабатывает запрос. Поэтому наиболее эффективным способом является использование директив перенаправления .htaccess. Делать это с помощью PHP - неэффективный способ.

1 голос
/ 04 июня 2010

Решения на стороне сервера кажутся немного ненужными, когда протокол сервера доменных имен предназначен для обработки перенаправлений в точности так же, как они. Информация о пути и переменные POST прозрачно сохраняются.

Если у вас есть доступ к записям DNS для вашего веб-сайта, лучше всего использовать запись CNAME для перенаправления пользователей на правильное доменное имя.

CNAME указывает людям, которые ищут один домен (например, site.com), на другой (например, main.site.com). Все это делается без какой-либо работы на вашем сервере.

Просто добавьте две записи в записи CNAME, указав:

domain.com => main.domain.com
www.domain.com => main.domain.com

Если ваш текущий DNS-провайдер не предоставляет этого, попробуйте использовать ZoneEdit , который очень хорошо работал для нас в прошлом.

1 голос
/ 04 июня 2010

Почему бы не использовать директиву ServerName?

...