首先,我想爲可笑的標題道歉。我並不想用「雙向」這個詞來表達自己的聲音,但我真的無法想象用另一種方式來描述它。諾言。在IIS7.5中雙向URL重寫/重定向
對我的問題。我在我的Web.config的<system.webserver>
/<rewrite>
/<rules>
部分有以下內容。
<!-- Who We Are -->
<rule name="1A">
<match url="^whoweare\.aspx$" />
<action type="Redirect" url="who-we-are" redirectType="Permanent" />
</rule>
<rule name="1B">
<match url="^who-we-are$" />
<action type="Rewrite" url="whoweare.aspx" />
</rule>
<!-- What We Do -->
<rule name="2A">
<match url="^whatwedo\.aspx$" />
<action type="Redirect" url="what-we-do" redirectType="Permanent" />
</rule>
<rule name="2B">
<match url="^what-we-do$" />
<action type="Rewrite" url="whatwedo.aspx" />
</rule>
現在這項工作非常有效。實際上,如果你訪問的網址http://example.com/whoweare.aspx(這是實際 URL頁面),你就可以301重定向到URL http://example.com/who-we-are(在虛擬 URL),如果你訪問的虛擬URL,你會被重寫爲實際的URL。
這意味着超級性感的網址沒有重複,也不會導致相互重寫,所以全面微笑。
我的問題是這樣的:這可以做得更優雅嗎?
這是一個有點麻煩,必須寫出兩條規則,以確保一個被重定向到另一個,而另一個被重寫爲一個。是否可以編寫一個規則來實現上述兩個功能?
Oooh,很好。我很慚愧地說我不知道重寫地圖。這當然似乎是一種更可維護的方法。但是,如果我問了一對夫婦關於您提供的代碼中發生了什麼的問題,您是否介意?首先,我不太清楚''實際上是否匹配,以及它如何匹配所有內容?其次,當本地工作時''REQUEST_URI}'會導致問題,因爲我可能在更深的目錄結構中工作而不是在發佈版本中工作?最後,「{R:n}」和「{C:n}」有什麼不同?感謝一羣卡洛斯。 –
2010-05-20 07:44:10
。*告訴它匹配URL中的所有內容(不包括查詢字符串)來分析每個請求。 REQUEST_URI會將整個URL(包括查詢字符串)絕對地匹配到網站「/」的根目錄。一個簡單的方法來看這是啓用跟蹤:http://learn.iis.net/page.aspx/467/using-failed-request-tracing-to-trace-rewrite-rules/ 最後{R: #}將在URL匹配中返回匹配項(在上面的例子中爲*),並且{C:#}將返回條件中的匹配項(在這種情況下是應用地圖的結果) 有一個URL Rewrite論壇, http://forums.iis.net/1152.aspx – 2010-05-20 15:29:49
乾杯隊友。超級有用,非常感謝。 – 2010-05-25 11:24:55