Перенаправление с http://sitename.com на http://www.sitename.com

Я использую ASP.NET 4. Я хочу выполнить перенаправление 301 с http://sitename.com на http://www.sitename.com.

Каков наилучший способ (и дополнительные способы) сделать это?

Мой сайт также индексируется по IP-адресу. Как я могу остановить это.


person Matt Kraven    schedule 11.05.2011    source источник


Ответы (5)


Вы можете сделать простую проверку в Page_Load:

    protected void Page_Load(object sender, EventArgs e)
    {
        string serverName = HttpUtility.UrlEncode(Request.ServerVariables["SERVER_NAME"]); 
        string filePath = Request.FilePath;
        if (!serverName.ToLower().StartsWith("www.")) 
            serverName = "www." + serverName; 
        Response.Redirect("http://" + serverName + filePath); 
    }

Или вы можете добавить следующее в файл htaccess:

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc] 

Замена domain.com и http://www.domain.com на ваш домен.

person anothershrubery    schedule 11.05.2011
comment
Response.Redirect выдает перенаправление 302, а не перенаправление 301. Параметр .htaccess будет работать только с Apache, но не с IIS. - person Tom Robinson; 11.05.2011
comment
Вы правы, конечно ... Научите меня беглому чтению того, что хотел ОП. - person anothershrubery; 11.05.2011

Я бы сделал перенаправление 301 на уровне IIS, см. эту публикацию в блоге: SEO-канонические URL-адреса и перенаправления 301 в Windows IIS 6, IIS 7

Чтобы запретить индексацию сайта по IP-адресу, настройте "site" в IIS, чтобы иметь имя хоста, не оставляйте это поле пустым.

person Tom Robinson    schedule 11.05.2011
comment
У меня нет большого контроля над IIS. Можете ли вы предложить мне альтернативу - person Matt Kraven; 11.05.2011
comment
Если вы используете IIS7 и хостинг-провайдер дает вам правильные разрешения, вы можете настроить это в своем файле Web.config в разделе system.webServer. - person Tom Robinson; 11.05.2011
comment
да, но модуль перезаписи URL должен быть установлен на сервере, и похоже, что это не так. Вот почему мне нужна альтернатива - person Matt Kraven; 11.05.2011

В зависимости от вашего DNS-провайдера они могут настроить перенаправления, обычно называемые чем-то вроде веб-переадресации, веб-псевдонима или веб-перенаправления. Просто убедитесь, что это 301, а не набор фреймов.

Связанные вопросы: Перенаправление канонических имен в Godaddy?

person Tom Robinson    schedule 11.05.2011

<rule name="Redirect to www">
  <match url="(.*)" />
  <conditions>
    <add input="{SERVER_PORT}" pattern="443" negate="true" />
  </conditions>
  <action type="Redirect" url="https://www.serdardemir.net/{R:1}" />
</rule>

вы можете использовать переписывание URL, чтобы добавить это правило в тег rules

person Serdar Demir    schedule 11.05.2011

<rule name="Redirect to WWW" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^yoursite.com$" />
          </conditions>
          <action type="Redirect" url="http://www.yoursite.com/{R:0}" redirectType="Permanent" />
        </rule>

Этот код работал у меня. Добавьте это в раздел правил вашего файла web.config.

person sulmanpucit    schedule 26.03.2012