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

Можно ли выполнить 301 редирект И перенаправить на запрошенный ресурс?

Для одного из наших проектов мы делаем ребрендинг названия веб-сайта, логотипа и т. Д.

Таким образом, нам необходимо 301 Moved Permenantly перенаправить всех пользователей из старого домена в новый. С IIS7 это довольно просто. Мы просто создаем новый веб-сайт, который перенаправляет весь трафик на домен, управляемый хостом ... на новый.

Но при этом теряется исходный ресурс назначения.

eg.
Old Domain: www.OldDomain.com
New Domain: www.NewDomain.com

User: www.OldDomain.com/user/PureKrome  -> 301 --> www.newDomain.com  

Обратите внимание, как он переходит в новый домен, НО не в / user / PureKrome?

Как я могу сделать это, чтобы он перешел в новый домен и сохранил исходный запрос ресурса? Я предполагаю, что URL-ReWriter для IIS7 может помочь?

Кроме того, что произойдет, если я захочу это сделать ...

CurrentDomain 1: Domain.com
CorrectDomain 1: www.Domain.com
CurrentDomain 2: AnotherDomain.com
CorrectDomain 2: www.AnotherDomain.com

Можно ли разместить их на одном веб-сайте IIS? Таким образом, любой URL-адрес domain.com будет 301 для www.domain.com

Прямо сейчас я делаю 2 веб-сайта IIS с жестко запрограммированным 301 (что по-прежнему означает, что я тоже теряю исходный запрос ресурса).

Помогите!

Блог RuslanY имеет отличный пост в котором описывается, как это сделать с помощью модуля перезаписи IIS.

Процитирую его Совет №3:

Очень часто у вас может быть один веб-сайт IIS, который использует несколько разных имен хостов. Самый распространенный пример - когда к сайту можно получить доступ через http://www.yoursitename.com и через http://yoursitename.com. Или, возможно, вы недавно изменили свое доменное имя с oldsitename.com на newsitename.com и хотите, чтобы посетители использовали новое доменное имя при добавлении ссылок на ваш сайт в закладки. Об этом позаботится очень простое правило перенаправления: просмотреть обычную копию в буфер обмена?

<rule name="Canonical Host Name" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" negate="true" pattern="^ruslany\.net$" />
    </conditions>
    <action type="Redirect" url="http://ruslany.net/{R:1}" 
            redirectType="Permanent" />
</rule>

Чтобы увидеть пример того, как это работает, попробуйте перейти на http://www.ruslany.net/2008/10/aspnet-postbacks-and-url-rewriting/. В адресной строке браузера вы увидите, что «www» удалено из имени домена.

Это проблема перезаписи URL.
Если вы используете Apache, вы можете поместить правила в файл .htaccess. Пользователи IIS должны приобрести и установить (хотя существует ознакомительная версия, позволяющая запускать один сайт на каждый экземпляр IIS) модуль ISAPIRewrite ISAPI, который интерпретирует файлы .htaccess.

На самом деле для этого вам понадобится модуль http. Вы можете прочитать URL-адрес в модуле http и сохранить путь, изменив имя хоста только в том случае, если оно отличается от вашего нового доменного имени или не начинается с www.

Дайте мне знать, если вам нужны подробности или код для этого.