Удалите префикс WWW с вашего сайта - PullRequest
13 голосов
/ 28 апреля 2009

Как Stack Overflow (и другие веб-сайты) удаляет префикс «www», когда он вводится как часть URL?

Это перенаправление, перезапись или что-то еще?

Обновление: я бы особенно хотел знать в контексте IIS 6

Ответы [ 9 ]

12 голосов
/ 28 апреля 2009

Простой способ сделать это - использовать директиву Apache "Redirect":

<VirtualHost *:80>
    ServerName www.example.com
    Redirect permanent / http://example.com/
</VirtualHost>

<VirtualHost *:80>
    ServerName example.com
    # remainder of server configuration goes here
</VirtualHost>

Директива Redirect автоматически сохраняет все, что следует за / в URL. Я считаю, что этот метод легче читать и понимать, чем метод Rewrite.

12 голосов
/ 28 апреля 2009

На Apache это выглядит так (внутри файла .htaccess):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
10 голосов
/ 28 апреля 2009

Запуская Fiddler , мы можем видеть, что сервер отвечает со статусом "301 перемещен навсегда" и ссылается на http://stackoverflow.com. Поскольку StackOverflow размещается в Windows 2k8 IIS7 , они сразу установили перенаправление в IIS7.

К вашему сведению:

список статусов HTTP

Если вы являетесь разработчиком .NET, возможно, вы знаете «Respose.Redirect», это создает статус 302 «Перемещение объекта». Поисковые системы, такие как коды статуса 301, в этом случае лучше, потому что они знают, что не должны возвращаться на www.stackoverflow.com в будущем.

5 голосов
/ 28 апреля 2009

Вы можете сделать это несколькими способами, используя mod_rewrite и перенаправление является моим любимым. Примерно так:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.cuenca.co$ [NC]
RewriteRule ^(.*)$ http://cuenca.co/$1 [R=301,L]
4 голосов
/ 28 апреля 2009

редирект. субдомен "www.stackoverflow.com" будет просто перенаправлен на "stackoverflow.com".

1 голос
/ 28 апреля 2009

Вам нужна запись dns по умолчанию, указывающая на ваш веб-сервер.

ping site.com и убедитесь, что ip указывает на веб-сервер, если нет необходимости добавлять запись DNS по умолчанию.

для базовой настройки:

Вам нужно будет добавить заголовки хоста http://www.visualwin.com/host-header/

Создать 1 сайт с заголовком сайта www.site.com

На вкладке Домашний каталог установите постоянное перенаправление на http://site.com

Создание второго сайта с заголовком узла site.com

Если вы хотите, чтобы www.site.com/file.html перенаправлял на site.com/file.html, вам понадобится более сложная настройка с чем-то вроде ISAPI_Rewrite или используйте пользовательские страницы 404 для этого.

0 голосов
/ 18 июня 2014

для апача

<VirtualHost *:80>
ServerName yourdomain.tld
ServerAlias www.yourdomain.tld
0 голосов
/ 15 июля 2009

Вы можете сделать то, что mod_rewrite делает для Apache, с помощью сопоставимого преобразователя URL для IIS. Хороший - IIRF . Правило:

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

Вы также можете подстановить имя хоста следующим образом:

RewriteCond  %{HTTP_HOST}  ^(.+)\.example\.com$    [I]
RedirectRule ^(.*)$        http://example.com/$1   [R=301]

IIRF можно использовать бесплатно.

0 голосов
/ 28 апреля 2009

Это очень далеко, но, насколько я знаю, это настройка DNS. Я думаю, вам не нужно указывать адрес HOST (WWW - это имя хоста (или компьютера / кластера ...), на котором находится сайт / в.).

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

Не уверен на 100%, но посмотрите, что возможно с DNS.

Надеюсь, это поможет или, по крайней мере, поможет вам двигаться в правильном направлении.

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