2016-12-01 79 views
0

我對重寫地圖相當陌生,但我們確實讓我們的工作在一個非常基礎的層面。在網站重新設計之後,我們建立了一個廣泛的重寫地圖(數千個規則),將舊頁面指向新頁面。我們遇到的麻煩是我們必須爲同一頁面添加多個值才能重寫。重寫地圖規則以匹配任何URL擴展

例子:

http://www.abc123.com/About --> http://www.abc123.com/about-us 
http://www.abc123.com/About.aspx --> http://www.abc123.com/about-us 
http://www.abc123.com/about/ --> http://www.abc123.com/about-us 
http://www.abc123.com/about.aspx --> http://www.abc123.com/about-us 

應該有正則表達式的基本URL後通配符任何一種方式 - 我希望是這樣的:^。 /[about] $如果所有的網址都包含「about」,但它們不包含,那麼這將很棒。

另請注意,我們不是通過目錄重定向,而是通過文件名進行重定向。這就是我們的CMS設置爲不使用.aspx擴展名,所以任何擴展都可以工作。

我想要的是隻需要有看起來像每個URL一個規則: 「http://www.abc123.com/about」,它會指向上述所有的變化到新的URL,無論它是否不具有擴展名,或者如果擴展名爲.html,.asp,.aspx或.whatever

超出了重寫規則的能力,還是存在一些我缺少的基本正則表達式?

下面是我們所使用的規則:

<rule name="Redirect Rule for Legacy Redirects" enabled="true" stopProcessing="true"> 
    <match url=".*" /> 
    <conditions> 
     <add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" /> 
    </conditions> 
    <action type="Redirect" url="{C:1}" appendQueryString="false" /> 
</rule> 

任何有識之士將不勝感激。

+0

我承認我不知道什麼是rewitemap,但你可以嘗試類似'match url =「。+ about $」' –

+1

正則表達式匹配什麼輸入?和正則表達式不匹配的是什麼輸入? – Whothehellisthat

回答

0

[HH] [Tt的] [Tt的] [PP]://(([^ /])/) [AA] [BB] [吳] [支原體] [Tt的] *

請參閱https://regex101.com/r/rZhJyz/1,只需將「about-us」添加到組1#匹配中即可。

+1

我不能這麼具體,因爲在我們的重寫映射中有成千上萬的重定向,並且大多數不是「關於」,但可以是任何東西。大多數情況下,我想知道是否有辦法不必爲每個URL的案例編寫特定的規則。在上面的例子中,這意味着寫1規則來覆蓋每個配置而不是4個。 – vbertini