簡體   English   中英

IIS7 URL重寫模塊替換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM