[英]IIS7 URL Rewriting Module Replace
我非常喜歡IIS7 URL重寫模塊,到目前為止,它對我很有用。
有一件事我不知道該怎么做:我想永久地將所有編碼空格(%20)的URL重定向到一個用短划線( - )替換空格的URL。
所以這:
http://www.test.com/About%20Our%20Mission.aspx
應該重定向到這個:
http://www.test.com/About-Our-Mission.aspx
只有正則表達式才有可能嗎?
沒有辦法直接做你想要的。
你可能會滿足於這樣的事情:
^(.*)%20(.*)%20(.*)%20(.*) replaced by: {R:1}-{R:2}-{R:3}-{R:4}
^(.*)%20(.*)%20(.*) replaced by: {R:1}-{R:2}-{R:3}
^(.*)%20(.*) replaced by: {R:1}-{R:2}
關於.aspx的好處之一是用真實代碼重寫URL是多么容易。 只需添加一些搜索並將代碼替換為您網站的Global.asax文件:
protected void Application_BeginRequest(object sender, EventArgs e)
{
string path = HttpContext.Current.Request.Path;
// Search and replace, RegEx, etc.
HttpContext.Current.RewritePath(path);
}
在IIS7上,您必須在web.config中添加一些條目來處理重寫非.aspx URL:
<system.webServer>
<handlers>
<clear/>
<add name="Brands1" path="Brands/*.html" verb="*" type="ASP.global_asax" resourceType="Unspecified"/>
<add name="Brands2" path="Brands/\?*.html" verb="*" type="ASP.global_asax" resourceType="Unspecified"/>
<!-- ... -->
IIS7 URL重寫模塊很棒,但僅僅因為你有錘子......
對於任意數量的%20s,使用ISAPI_Rewrite 3或Helicon Ape的一個規則可以實現相同的目標:
RewriteBase /
RewriteRule ^(.*)%20(.*)$ $1-$2 [LP,R=301,L]
您可以編寫自定義重寫提供程序,以使用原始URL進行任何操作。 但這不僅僅涉及正則表達式。 更多細節在這里 。
也許我很生氣,但這似乎有用......
使用具有此模式的正則表達式的URL_Rewrite規則:
^(.*) (.*)
重定向到
{R:1}-{R:2}
我用一個空格或許多空格測試了它,它對我使用IIS 10工作正常。請注意,它對於%20
也適用於“ “在URL字符串中,歡呼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.