Pull to refresh

Comments 43

Никогда не понимал зачем делают подобные редиректы. Имхо, сайт должен работать и с www, и без.
Мало ли зачем пользователь ввел в адресную строку адрес с www. Разумеется, www — как правило обычный домен третьего уровня, технически ничем от других третьеуровневых не отличающийся. Но исторически так сложилось, что, например, в оффлайне вместо домена второго уровня указывается домен третьего — www, так люди малознакомые с интернетом лучше понимают что указано имя сайта (особенно если непривычная зона, не .ru).
Я так понимаю, www.server.ru — ведет именно на веб-сервер домена server.ru. Т.е. вроде как там может много всяких услуг предоставляться, а вот услуга web — на www. Это сейчас у нас все равно происходит анализ типа пакетов и перенаправление на нужный сервер (внутри сети). А раньше это мог быть отдельный сервер со своим именем. ИМХО, пережитки старины.
Если под словами «ведет именно на веб-сервер» вы имеете ввиду обслуживание по протоколу http/https, то, как правило, это делается на 80-м порту. А «много всяких услуг» — на других портах. И не важно физически один сервер отвечает запросы по доменам server.ru и www.server.ru или это разные сервера, я лишь говорю о том что сайт должен работать и так и так.
Я в курсе всех дел (портов, протоколов и проч. :) Я имел ввиду, что, возможно, когда компьютеры не были такими мощными, ставили отдельный комп для веб.
То есть, «компы не такие мощные»? ))) У нас вот например для доступа к корпоративной сети стоит роутер. На нем вообще ничего кроме правильно настроенного роутера нет. Второй — собственно веб-сервер, третий — база данных для веб-сервера (БД должна быть отдельно против хакеров), четвертый — гейт для корпоративных не-веб сервисов, скоро будут еще (например, неплохо бы выделить внешний тестовый веб-хостинг на отдельную машину, ломанут — так хоть и бэкапы есть, и нежалко).
Всё правильно в такой доменной архитектуре! Доменное имя _должно_ редиректиться автоматически на www, если на него зашли с помощью браузера. Это типа мегасемантично, и вообще.
Походу никто внимательно мои комменты не читает. «А раньше это мог быть отдельный сервер со своим именем. ИМХО, пережитки старины.» Я выдвинул предположение, как это могло быть раньше. И почему осталось.

Сейчас, естественно, должно редиректиться.
А почему и сейчас не делать отдельный сервер с отдельным именем? Так хотя бы адрес красивый будет, а в плане запоминания и пиара — замечательная вещь.

Например, заходишь браузером на ssh.somehost.com, а тебе выводится веб-страничка: чтобы соединиться по протоколу SSH вам нужно позвонить такому-то и такому-то системному администратору и получить пароль, скачать вот эту прогу, и соединиться на ЭТОТ же адрес, но уже по другому протоколу.

Или вообще сделать отдельный гейт для подключения по SSH. С собственным именем и внешним ip. Так, чтобы на остальные сервера подсоединиться по SSH было в принципе невозможно.
Поэтому, например, если на сервер mailer.somehost.com начинает кто-то стучаться по SSH, то можно смело расценивать это как хакерскую атаку и принимать меры ;) А если на ssh.somehost.com — то всё нормально.
три слова — SEO :)

для Google www и без два разных url, но так как там один и тот же контент, велика вероятность что страницы будут помечены как копии друг друга и не будут проиндексированы.
Неужели вы думаете что 90% сайтов в интернете не проиндексированы Гуглом, потому что он считает их копиям :)

Формально это действительно два разных урла. Даже более того — два разных домена. Но Гугл не был бы Гуглом, если бы там сидели такие дураки, не понимающие этой проблемы :)
Вначале Google и Яндекс будут их считать разными сайтами, а потом через некоторое время склеют. У гугла это обычно быстро происходит, а вот Яндекс мешкается иногда даже несколько месяцев, половина сайта видна с www, половина без.
Для Яндекса можно помочь с выбором и указать что сайты одинаковые, добавив строку с основным доменом:
Host: site.ru
в robots.txt
Но это сразу не подействует, а просто ускорит склейку домена с www или без.
дла того-же Яндекса, к примеру, www.server.ru и server.ru — разные сайты… это разве ничего не значит?
Я не совсем понял что значит у вас «разные сайты». У Яндекса перенаправление с yandex.ru на www.yandex.ru. Яндекс хороший поисковк, замечательная компания, но это не мешает мне считать, что перенаправление это неправильно.

Кстати, заметьте, что Яндекс делает обратное предложенным автором правилам, кидает на домен с www :)
Яндекс делает абсолютно правильно. А автор топика копает себе яму — когда-нибудь в неё свалится.
Ок. Только поясните, пожалуйста, почему Яндекс делает правильно?
Чуть ниже. У Яндекса много сервисов и лишняя головная боль по исследованию того, как куки, выставляемые разными сервисами взаимодествуют между собой и подробные инструкции о том, как через XSS на фотках можно взломать почту — им не нужны. Если вы никогда-нигода-никогда не захотите завести у себя на домене Wiki или Форум — можете перенаправлять на имя без www…
Кстати Хабр перенаправляет на http://habrahabr.ru/ — но тут это делается сознательно ибо разные блоги расположены на разных поддоменах, а авторизация — общая. Но это очень сильно ограничивает вас в дальнейшем (глюков конкретно на Хабре, возникших из-за этого решения было уже найдено и пофикшено несколько и, я думаю, ещё будет), так что если вы хотите поступить именно так — делайте это сознательно. Довода «без www короче и красивее» недостаточно…
Да, понял, спасибо. Полностью согласен, что для сайтов активно использующих домены третьего уровня, а то и вовсе передающих эти домены в пользование третьих лиц важно иметь именно www.site.ru.

Доводы «без www короче и красивее» — это вообще бред, имхо, об этом речь не идет :)
Я говорил про то, что набирая адрес сайта я могу набрать его как с www так и без — и должен попасть нормально на сайт. Лишнее перенаправление не есть гуд, если оно лишнее (исключение, когда перенаправление оправдано, — Вы привели).
На самом деле ответ тривиален до боли. Всё дело в воздушных пузырьках куках. Дело в том, что куки, выданные на имя_домена.com действуют и на www.имя_домена.com и на promo.имя_домена.com и на другие сайты в этом домене. Тем самым разместив что-либо кроме редиректа на имя_домена.com вы связываете себя по рукам и ногам: вы уже никогда не сможете разместить в вашем домене сайт, который для вас делает кто-то другой, вы не сможете разместить там независимый форум или wiki — фактически вы берёте на себе обязанность контролировать в этом домене всё и вся. Не надо так делать — потом боком выйдет!
Спасибо за замечание, на самом деле не знал.
Однако, набор этих правил понравится поклонникам сайта nowww.ru :)
Есть много людей, плохо разбирающихся в безопасности, но считающих себя большими специалистами во всём. Если бы в префиксе www не было бы смысла, то уж наверное такие компании как Яндекс, Гугл и прочие от этого «атавизма» бы отказались.

А nowww.ru большой популярностью не пользуется — и слава богу…
Кстати, ваши правила не совсем уж универсальны. Протокол https, например, не учтен.
Спасибо за замечание, не подумал. Сейчас исправлю.
UFO just landed and posted this here
Я узнал. Использовал редирект, но всегда зависил от конкретного домена — приходилось править всегда ручками. Когда автор выложит исправление для https — буду использовать и у себя.

p.s. Web — профессия, а чисто для развлечения и расширения кругозора…
Сделал проверку протокола, однако это черновой вариант. Еще вспомнил о том, что может быть указан нестандартный порт (не 80). Окончательный вариант правил напишу позднее, уже пора с работы уходить :)
На работе надо РАБОТАТЬ.
Вы на время гляньте. Человек скорее всего уже всерхурочно работает. Да и впринципе ничего ему не мешает и в рабочее время для разминки и отвлечения мозгов сделать что-нибудь типа этого.
Время не показатель.
Сверхурочно? Сидя на хабре целый день при нормальном руководстве можно и на ночь остаться работать.
А для отвлечения мозга советую вообще от компа удалиться (кофе/чай с пончиками или болтовня с коллегами).
У меня уже почти с десяток контактов в IM лишились работы. Они всё валят на кризис, на начальство, а на самом деле их уволили за разгильдяйство на рабочем месте. Они оказались самым слабы звеном.
К автору топика я претензий не имею. Просто высказал своё мнение по поводу занятия на работе посторонними вещами.
гораздо полезней вместо калорийных пончиков и пустой болтовни с коллегами почитать интересную статью.
Тогда объясните чем пустая болтовня с коллегами отличается от нашей болтавни здесь.
А на счёт калорийности пончиков — это был лишь пример.
с удовольствием объясню:
1. не всегда, а скорее в редких исключениях, болтовня на Хабре пустая.
2. аудитория Хабра несравнимо больше количества ваших коллег, а соответственно больше мнений и идей, которые могут быть интересными и полезными для вашего кругозора и развития.
3. неинтересную для вас тему всегда можно пропустить мимо.
Если 10 минут посторонних вещей увеличивают в 2 раза продуктивность на ближайший час, то почему бы нет? Яды в малых количествах бывают полезны.
А на счёт этого никто и не спорил.
Вы будете смеяться, но до сих пор аходятся сайты, которые без www. вообще не открываются. Доступ к ним можно получить только лишь набрав в адресной строке www.домен.ру.
ок, а если надо перебрасывать с site.ru на www.site.ru?

через тройное отрицание:
RewriteCond %{HTTP_HOST} ^([^w][^w][^w]\.?.*) [NC]
RewriteRule ^(.*)$ www.%1/$1 [R=301,L]

как-то неспортивно :)
ну так у Вас адрес сайта статично прописан, а автор статьи предлагает универсальный вариант для любого домена.
Автор предлагает обратное направление.
А по поводу универсальности, говносайты строчить? Или трудно один раз написать?
Прошу прощения, если непонятно написал: хотелось бы универсальное решение для переброса на www с адресов, которые без www. В общем-то, я догадался, что автор предлагает обратное направление, и обозначил свое желание в комментарии выше.

А по поводу универсальности ─ она применяется не только в говносайтах (мне, например, для CMS). Надоело каждый раз генерировать .htaccess из шаблона.
Если кому интересно — сделал универсальный набор правил с учетом протокола (http или https) и номера порта (80 или другой).
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# В переменную окружения %{ENV:PROTOCOL} помещаем протокол
RewriteRule ^(.*)$ - [E=PROTOCOL:http]
RewriteCond %{HTTPS} ^on$ [NC]
RewriteRule ^(.*)$ - [E=PROTOCOL:https]
# Если нужно добавляем www
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ %{ENV:PROTOCOL}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ %{ENV:PROTOCOL}://www.%{HTTP_HOST}:%{SERVER_PORT}%{REQUEST_URI} [R=301,L]
</IfModule>
*универсальный набор правил для того, чтобы были постоянные редиректы на сайт с www.
Sign up to leave a comment.

Articles

Change theme settings