Назад | Перейти на главную страницу

Кошмар 301 www. Как мне вернуться обратно?

Около шести месяцев назад я решил, что лучше всего разместить свой веб-сайт на голом домене, скажем так, example.com. Я сделал то, что мне сказали на всех сайтах с инструкциями, добавив 301 редирект с www.example.com на example.com.

Теперь я хочу отказаться от необоснованного использования «голого» домена и создать свой веб-сайт по адресу www.example.com. Прочитав различные вопросы как на этом сайте, так и на таких сайтах, как yes-www.org, я понял, что в долгосрочной перспективе мне будет лучше, если я буду использовать «www». для моего основного сайта. Это особенно актуально сейчас, поскольку веб-сайт становится больше и должен быть разделен на отдельные сайты (например, news.example.com, research.example.com, community.example.com и т. Д.). При новой структуре доменов основное содержание должно быть размещено на www.example.com.

Проблема в том, что удаление старого 301 редиректа для www.example.com на example.com и добавление одного с example.com на www.example.com приведет к бесконечному циклу перенаправлений для тех, у кого сайт все еще есть в кеше. !

К сожалению, это большой сайт с десятками тысяч зрителей в день. и не может быть отменен автоматически.

Единственное, что я могу придумать, - это настроить свой основной веб-сайт на домене www1.example.com, выполнить перенаправление с example.com на www1.example.com и каким-то образом со временем вернуться на www.example.com? Как я мог это сделать, если бы перенаправления действительно кажутся постоянными?

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

Отказ от ответственности: я автор http://www.yes-www.org/ и я рада, что тебе понравилось.

Вы правильно определили здесь серьезную проблему, связанную с кэшированием на стороне клиента и, возможно, даже прокси-кешированием ответа 301. (К счастью, поисковые системы довольно быстро улавливают любые изменения, так что здесь не о чем беспокоиться.)

При кешировании RFC 2616 говорит об этом:

Ответ, полученный с кодом состояния 200, 203, 206, 300, 301 или 410, МОЖЕТ быть сохранен в кэше и использоваться в ответ на последующий запрос с учетом механизма истечения срока, если директива управления кешем не запрещает кэширование.

Что интересно, браузеры различаются по тому, действительно ли они кэшируют 301 ответ.. Независимо от того, что вы в конечном итоге делаете, у вас почти наверняка появятся пользователи, которым нужно будет очистить кеш своего браузера.

Учитывая все это, я бы подошел к проблеме следующим образом:

  • Я бы никогда не стал использовать третий поддомен, как рекомендовали мои коллеги. Я не вижу причин, по которым это может быть необходимо, и часть ваших пользователей обязательно заметят и зададутся вопросом, если что-то не так.
  • Сначала я бы изменил существующие 301 редирект с www на не www на 302 редирект. 302 не кэшируется по умолчанию. Я бы оставил его на некоторое время, возможно, на 30 дней, чтобы поисковые системы и большинство ваших постоянных посетителей могли его увидеть.
  • По истечении этого времени я бы изменил веб-сайт на использование www, удалил перенаправление 302 и разместил перенаправление 301 с не-www на www.

Хотя, вероятно, всегда будет один или два пользователя, которым придется очистить свой кеш, чтобы восстановить доступ к сайту, независимо от того, какой метод вы используете, количество должно быть минимальным, поскольку кеши пользователей не бесконечны, и даже если они не посещайте ваш сайт тем временем, они почти наверняка посетят многие другие сайты, которые, вероятно, вытеснят ваш старый 301 из кеша из-за его возраста и отсутствия использования.

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

Также, если вы регистрируете эти запросы, вы можете получить хорошую статистику о том, сколько пользователей приходят с вашего www и все еще получаю перенаправление. В конце концов, это число должно снизиться.

Кроме того, не забудьте добавить заголовки истечения срока действия в эти 301 - тогда у вас не будет проблемы, описанной в ошибке FireFox, с которой вы связались.

Измените перенаправление www.example.com -> example.com к www.example.com -> temp.example.com, и, конечно, убедитесь, что temp адрес работает как псевдоним для сайта.

Сделайте это в течение нескольких недель или месяцев. (И не забудьте истечь заголовки на этом 301!) Дайте ему достаточно времени, пока вы не думаете, что браузеры большинства людей узнали о новом перенаправлении на temp.example.com и забыл старую, которая идет в example.com.

В то время вы можете перенаправить example.com -> www.example.com, без создания петли. (За исключением тех немногих, у кого еще есть кеш старого редиректа: очень плохо).

При этом отключите редирект на temp, но пусть этот псевдоним еще какое-то время работает. Когда вы замечаете, что доступа к temp, ты можешь выключить temp.