2011-05-02 3 views
0

Можно создать дубликат:
Route www link to non-www link in .net mvcПеренаправление http://example.com в http://www.example.com

Эй,

Я хочу, чтобы мой сайт, чтобы доступ к ним возможен только в домене www. Как я могу это сделать?

Я использую ASP.NET 3.5, C#, IIS 7, но я размещаю его на GoDaddy, поэтому не имею доступа к IIS, просто FTP.

Спасибо, Dan

+0

Вы должны быть в состоянии получить доступ к настройкам IIS. Я не совсем уверен, почему вы хотите это сделать. Конечно, альтернатива - это лучший хост, где у вас больше контроля. –

+1

Это не дубликат этого вопроса. Он не использует MVC. – jgauffin

+0

Ответ тот же ... Но что угодно ... – BrunoLM

ответ

2

rewrite module Использование которая доступна на GoDaddy.

Вы можете установить его с IIS или просто разместить в вашем web.config следующие под <system.webServer>:

<rewrite> 
    <rules> 
    <rule name="Canonical" stopProcessing="true"> 
     <match url=".*" /> 
     <conditions> 
     <add input="{HTTP_HOST}" pattern="^([a-z]+[.]com)$" /> 
     </conditions> 
     <action type="Redirect" url="http://www.{C:0}/{R:0}" redirectType="Permanent" /> 
    </rule> 
    </rules> 
</rewrite> 

В качестве альтернативы вы можете сделать это перенаправление на Global.asax.cs:

protected void Application_BeginRequest(object sender, EventArgs ev) 
{ 
    if (!Request.Url.Host.StartsWith("www", StringComparison.InvariantCultureIgnoreCase)) 
    { 
     Response.Clear(); 
     Response.AddHeader("Location", 
      String.Format("{0}://www.{1}{2}", Request.Url.Scheme, Request.Url.Host, Request.Url.PathAndQuery) 
      ); 
     Response.StatusCode = 301; 
     Response.End(); 
    } 
} 
+0

Я ненавижу web.config! lol Я никогда не понимаю, где разместить что-то, должно быть вложено внутри чего-то еще? или просто внутри ? – Danpe

+0

@Danpe ''. Я рекомендую использовать модуль перезаписи вместо альтернативного метода, показанного выше. – BrunoLM

+1

Я получаю: 'Предупреждение 2 Элемент 'system.webServer' имеет недопустимый дочерний элемент 'rewrite' .' – Danpe

0

Если вы работаете в веб-сервер Apache, добавьте это в ваш файл .htaccess:

RewriteCond %{http_host} . 
RewriteCond %{http_host}!^www\.example\.com [NC] 
rewriterule (.*) http://www.example.com/$1 [R=301,L] 
+0

Автор использует IIS 7 и ASP.NET 3.5. Кроме того, я не считаю, что GoDaddy не восстанавливает файл .htaccess. –

+0

Я использую IIS 7. – Danpe

Смежные вопросы