2013-02-23 85 views
2

我看到用胡言亂語很多類似的問題,我不明白:附加在WWW URL託管ASP站點(即沒有IIS訪問)

我想知道如何使用Mi克羅夫特的技術......或者只是向我解釋那些人在談論什麼以及如何使用它們。

基本上,如果有人類型「mydomain.com」到地址欄,我想它解析爲「www.mydomain.com」當頁面加載完畢。

編輯:這是一個託管網站,所以我無法配置IIS服務器。

+1

檢查答案在這裏:http://stackoverflow.com/questions/509205/is-there-a-way-to-always-require-or-force-the-www-subdomain-on-a-site – 2013-02-23 03:03:42

+0

哦,對不起。我不能那樣做。這是一個託管網站。應該補充一點。 – jp2code 2013-02-23 03:05:56

回答

6
  1. 非WWW到www重定向
  2. www.yourdomainname.com/default.aspx到www.yourdomainname.com

現在在web.config中

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

     <rule name="Default Document" stopProcessing="true"> 
      <match url="(.*?)/?default\.aspx$" /> 
      <action type="Redirect" url="{R:1}/" /> 
     </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 

添加配置標籤(或)與此一去:

<rewrite> 
    <globalRules> 
     <rule name="Redirects to www.domain.com" patternSyntax="ECMAScript" stopProcessing="true"> 
      <match url=".*" /> 
      <conditions logicalGrouping="MatchAny"> 
       <add input="{HTTP_HOST}" pattern="^domain.*(com|net)$" /> 
       <add input="{HTTP_HOST}" pattern="^(www.)?mydomain2.(com|net)$" /> 
       <add input="{HTTP_HOST}" pattern="^www.domain.net$" /> 
      </conditions> 
      <action type="Redirect" url="http://www.domain.com/{R:0}" /> 
     </rule> 
    </globalRules> 
</rewrite> 
+1

我有一種感覺,這是一般的正確答案,但似乎他可能沒有能力添加IIS重寫模塊,因爲他的宿主環境。但是,如果他確實有這個模塊,這是最好的 – 2013-02-23 03:18:05

+0

是的,我的VS2010項目告訴我''是一個無效的子元素。第二個例子的'web.config'文件的哪一部分進入? – jp2code 2013-02-23 03:22:05

+0

@ jp2code-與第一個相同。 – coder 2013-02-23 03:22:58

3

這是一種一個有趣的解決方案。我只是提出這個建議,因爲你描述的侷限性。最好在IIS中使用或使用HTTP模塊,就像其他答案所建議的那樣。但是,這也可以,但它不是一個很好的方法來完成它。

你可以把這段代碼到你的頁面初始化事件處理程序(或初始化處理您的母版頁)。

If Request.RawUrl.StartsWith("http://mydomain") Then 
    Response.Redirect(Request.RawUrl.Replace("://", "://www.")) 
End If 

哪裏mydomain就像mydomain.com沒有www

它檢查如果URL沒有WWW其中WWW「應該」。如果它不在那裏,請將用戶重定向到在正確位置具有WWW的那個頁面的版本。

+0

謝謝Brian。這正是我希望我不需要做的,但我不知道如何提出這個問題。關於這個問題應該如何措辭的提示,以便ASP.NET世界中的其他人可以在未來找到它? – jp2code 2013-02-23 03:32:36

+1

如果您不想執行HTTP模塊並且您無法訪問IIS配置來安裝重寫模塊,那麼我的這個答案是一個很好的解決方案。如果您的主頁面只需將代碼放入一次,那麼最好是這樣,但如果每個頁面都需要代碼,則不是世界末日。我會將您的問題標題調整爲「無法訪問IIS配置」。這將有助於人們,我認爲 – 2013-02-23 03:37:58

+0

好主意。標題已被相應編輯。謝謝。 – jp2code 2013-02-23 12:38:11