Задать вопрос

301 redirect ASP.NET?

Здравствуйте.

Есть 1 сайт, к нему можно обратиться по 3 доменам.

site1.com

site2.com

site3.com


Это все один и тот же сайт.

Необходимо правило для asp.net, которое с site3.com & site2.com отдавало 301 редирект на www.site1.com


Спасибо!
  • Вопрос задан
  • 8131 просмотр
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
Valeriy1991
@Valeriy1991
Разработчик .NET C# (ASP.NET MVC) в Alfa-B, Moscow
Содержимое web.config - реально работающий пример (названия сайтов изменены на фейковые), который:
1) при переходе на www.company.ru перенаправляет на company.ru
2) при переходе на mysite.com перенаправляет на company.ru
3) при переходе на www.mysite.com перенаправляет на company.ru
4) сохраняется ссылочная целостность, т.е. при переходе по www.mysite.com/home/write_to_us перенаправляет на company.ru/home/write_to_us

Если не работает, значит, что-то с модулем URL Rewrite Module в IIS.

На сайте mysite.com (с которого будет редирект) в web.config пишем:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
	<rewrite>
		<rules>			
			<rule name="Condition1" stopProcessing="true">
				<match url="^(.*)$" ignoreCase="false" />
				<conditions logicalGrouping="MatchAll">
					<add input="{HTTP_HOST}" pattern="^(www\.)?mysite\.com$" />
				</conditions>
				<action type="Redirect" url="http://company.ru/{R:1}" redirectType="Permanent" />
			</rule>
			<rule name="Condition2" stopProcessing="true">
				<match url="^(.*)$" ignoreCase="false" />
				<conditions logicalGrouping="MatchAll">
						<add input="{HTTP_HOST}" pattern="^www\.company\.ru" />
				</conditions>
				<action type="Redirect" url="http://company.ru/{R:1}" redirectType="Permanent" />
			</rule>
		</rules>
	</rewrite>
  </system.webServer>
</configuration>


На сайте company.ru (на который будет редирект) в web.config пишем:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  ...
  <system.webServer>
	  <rewrite>
		  <rules>
			  <rule name="Redirect to company.ru 1" stopProcessing="true">
				  <match url="^(.*)$" ignoreCase="false" />
				  <conditions logicalGrouping="MatchAll">
					  <add input="{HTTP_HOST}" pattern="^(www\.)?mysite\.com$" />
				  </conditions>
				  <action type="Redirect" url="http://company.ru/{R:1}" redirectType="Permanent" />
			  </rule>
			  <rule name="Redirect to company.ru 2" stopProcessing="true">
				  <match url="^(.*)$" ignoreCase="false" />
				  <conditions logicalGrouping="MatchAll">
						  <add input="{HTTP_HOST}" pattern="^www\.company\.ru" />
				  </conditions>
				  <action type="Redirect" url="http://company.ru/{R:1}" redirectType="Permanent" />
			  </rule>
		  </rules>
	  </rewrite>
  </system.webServer>
  ...
</configuration>


Возможно, сама Visual Studio будет у Вас ругаться на наличие секции "rewrite" - у меня она эту секцию подчеркивала. В чем причина - я, честно говоря, не помню, но на самом сайте уже все работает на ура.

Успехов!
Ответ написан
GLuRE
@GLuRE
В файлах .htaccess (httpd.conf для Apache) на доменах с которых нужен переход впишите следующее:

Redirect 301 / www.you.ru/
Ответ написан
@IchWill
Если есть доступ к панели управления IIS7, то создайте там сайт, пропишите в биндингах site2.com и site3.com
Потом клик на иконку HTTP Redirect, в панельке управления и заполните небольшую формочку (два чекбокса, инпут и дропдаун), и потом на кнопочку Apply.

формочка
Ответ написан
Комментировать
LifeAct
@LifeAct
Создаем и раскручиваем, не ставим на конвейер
для меня сработало так:

<rewrite>
      <rules>
        <rule name="Redirect to non-www" stopProcessing="true">
          <match url="(.*)" negate="false"></match>
          <action type="Redirect" url="http://aforizmus.com/{R:1}"></action>
          <conditions>
            <add input="{HTTP_HOST}" pattern="^aforizmus\.com$" negate="true"></add>
          </conditions>
        </rule>
      </rules>
    </rewrite>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы