2013-04-11 55 views
5

Gần đây tôi đã di chuyển trang web ASP.net sang trang web ASP.net MVC. Trước đó có hai tiêu đề máy chủ lưu trữ một mydomain.com và một tiêu đề khác là www.mydomain.com. SEO của tôi nói rằng bạn chỉ nên sử dụng một url "www.domain.com" cho lợi thế SEO.Trang web ASP.net MVC: Chuyển hướng tất cả yêu cầu "không phải WWW" tới WWW

Tôi đang tìm tùy chọn để chuyển 301 vĩnh viễn tất cả yêu cầu mydomain.com sang www.mydomain.com.

Các trang web được lưu trữ trong IIS6 và phát triển trong ASP.net MVC 4.

Trả lời

0

Thật không may, mô-đun ghi đè URL không hoạt động với IIS6 (chỉ IIS7 trở lên). Bạn đã xem xét việc tạo ra HttpModule của riêng bạn, một cái gì đó như thế này?

IIS 6 how to redirect from http://example.com/* to http://www.example.com/*

Hoặc bạn có khả năng có thể sử dụng một giải pháp bên thứ 3 như một trong những:

http://iirf.codeplex.com/

http://www.urlrewriting.net/149/en/home.html

http://www.isapirewrite.com/

http://urlrewriter.net/

18

Bạn có thể làm điều này từ file web.config của bạn

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

này là một câu trả lời hay, @Tommy; không phải là một dòng của C# trong tầm nhìn. –

+0

Bạn phải đang sử dụng IIS7 trở lên để sử dụng mô-đun Rewrite URL. Đây là cách để đi nếu bạn có ít nhất IIS7, nhưng nó sẽ không hoạt động cho IIS6. – Craig

+0

@Tommy - sẽ tốt hơn nếu sử dụng mô-đun Rewrite URL IIS7 hay.Chức năng định tuyến thuần trong webApp chính là thực hiện chuyển hướng nếu bạn có khả năng sử dụng cả hai? Hoặc (tùy chọn thứ ba) tôi chỉ nên trả lời cả hai và duy trì URL cho cả hai bằng cách sử dụng một proxy ngược trong mô-đun Rewrite URL? ... mặc dù tùy chọn thứ 3 cuối cùng không lý tưởng cho SEO mà tôi nghĩ. – johntrepreneur

5

Bạn có thể sử dụng cấu hình hoặc Url Ổ ghi trong IIS, nhưng phương pháp tốt nhất mà tôi đã tìm thấy chỉ là để đặt một số mã trong Application_BeginRequest() trong global.asax.cs của bạn như thế này:

var HOST = "www.mydomain.com"; 

if (!Request.ServerVariables[ "HTTP_HOST" ].Equals(
    HOST, 
    StringComparison.InvariantCultureIgnoreCase) 
) 
{ 
    Response.RedirectPermanent(
    (HttpContext.Current.Request.IsSecureConnection ? "https://" : "http://") 
    + HOST 
    + HttpContext.Current.Request.RawUrl); 
} 

Bởi vì bạn đang làm điều này trong mã, bạn có thể có bất kỳ logic nào bạn cần trên cơ sở theo yêu cầu.

+0

tôi đã được thử quy tắc trong cấu hình trong tất cả các khía cạnh nhưng đã không thành công trong IIS 7. nhưng giải pháp này hoạt động từ tôi. Cảm ơn rất nhiều. – CrazyDev

0

(IIS 7 hoặc cao hơn yêu cầu)

từ http://www.codeproject.com/Articles/87759/Redirecting-to-WWW-on-ASP-NET-and-IIS

(Tương tự như giải pháp trên, nhưng không đòi hỏi bạn phải thêm tên miền riêng của bạn.)

<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <clear /> 
       <rule name="WWW Rewrite" enabled="true"> 
        <match url="(.*)" /> 
        <conditions> 
         <add input="{HTTP_HOST}" negate="true" 
          pattern="^www\.([.a-zA-Z0-9]+)$" /> 
        </conditions> 
        <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" 
         appendQueryString="true" redirectType="Permanent" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

Lưu ý rằng bạn sẽ nhất có thể thấy các dòng nguệch ngoạc trong thẻ với thông báo rằng thẻ không hợp lệ. Tôi nhận được thông báo này nhưng, trên thực tế, nó hoạt động tốt.

Nếu bạn muốn IntelliSense làm việc, bạn có thể thử bản cập nhật này đây ...

http://ruslany.net/2009/08/visual-studio-xml-intellisense-for-url-rewrite-1-1/

Thông tin thêm về httpRedirect có thể được tìm thấy ở đây ...

http://www.iis.net/configreference/system.webserver/httpredirect