2011-05-02 81 views
8

我想使網站始終在地址中有www,並通過IIS重寫來強制執行它。IIS 7規範URL重定向

例如,test.com將成爲www.test.com。

典型的例子重寫規則是:

<rule name="Canonical Host Name" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
    <add input="{HTTP_HOST}" negate="true" pattern="^www\.test\.com$" /> 
    </conditions> 
    <action type="Redirect" url="http://www.test.com/{R:1}" redirectType="Permanent" /> 
</rule> 

然而,這需要我,進入我的網站的完整URL。它不適用於具有諸如www.test.dev和www.test.stage之類的URL的開發環境和登臺環境。

是否有可能創建一個IIS重寫規則來處理所有這些情況?

+0

如果您正在使用visual studio,配置轉換將有助於解決測試/部署問題。 – Bon 2014-09-16 19:41:39

回答

1

你說得對,完整的URL需要在web.config中。儘管你有選擇。

  1. 您可以使用配置轉換使正則表達式匹配正確的環境。

  2. 如果在web.config中包含所有三個URL重寫規則,似乎沒有任何傷害。這聽起來像你的環境是孤立的,所以每個環境只會匹配其中一個規則。這可以混亂你的web.config,但不是可怕的。

我與選項1.去你能找到的配置信息轉換這裏:http://msdn.microsoft.com/en-us/library/dd465326.aspx

3

我對你有另一種解決方案:

<rule name="Canonical domain name" enabled="true" stopProcessing="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> 
+0

我試過這個規則,但它不適用於IP地址的網址。問題是negate =「true」類型的規則會捕獲IP地址,它的前綴是'http:// www.' – mika 2012-10-29 20:54:14

-1

它被認爲是考慮到良好的實踐的搜索引擎和網站流量分析總是從裸露的域名(如mydomain.com)重定向到規範域名www.mydomain.com。這個重定向應該由網絡服務器完成,甚至在獲得網站代碼和內容之前。爲了使IIS無條件重定向你需要:

  • II7版本&及以上
  • 微軟的IIS URL重寫安裝了2個模塊(或支持的 託管服務提供商)
  • 代碼按照下面的鏈接片斷您web.config文件(位於您的站點的根目錄)

您需要重定向http和https請求。有一個清晰而複雜的解決方案HERE

+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分並提供該鏈接供參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/10330412) – Vivek 2015-11-25 10:14:45

+0

@VVK - 雖然答案*包含鏈接,但答案在沒有它的情況下獨立存在:問題「*是否可以創建一個IIS重寫規則將處理所有這些情況?*「**是**回答:user3104351列出了三件需要完成的事情,並且說http和https請求需要重定向。 「清晰而複雜」的解決方案是甜點,而不是主菜。 - 也[在審查](http://stackoverflow.com/review/low-quality-posts/10330412)。 – 2015-11-25 10:25:44

0

我也建議你另一種變體在本地環境中進行測試:

  1. 添加到C:\ WINDOWS \ SYSTEM32 \ DRIVERS \等\主機:

127.0.0.1 www.example.com

  • 在IIS管理器中選擇站點並右鍵單擊 - >編輯綁定.. - >添加..

  • 輸入主機名:www.example.com

  • 打開cmd並運行iisreset

  • 現在你可以使用www.example.com中被映射到本地主機

    瀏覽器