2015-06-03 60 views
2

我正在重建一個在線商店,並且該過程的一部分正在編寫301重定向,用於客戶可能已添加書籤的舊鏈接以創建新地址。除了舊地址包含%字符的地址之外,它們全部工作。它似乎在某種程度上干擾了正則表達式。規則是:導致IIS URL重寫問題的「%」字符正則表達式

<rule name="Custom 41 redirect" stopProcessing="true"> 
    <match url="^c80/How-to-%20Use-Shop-Name\.aspx" ignoreCase="true" /> 
    <action type="Redirect" url="/how-to-use-shop-name" redirectType="Permanent" /> 
</rule> 

測試使用內置的IIS中的正則表達式測試儀告訴我,打

/c80/How-to-%20Use-Shop-Name.aspx

匹配模式但是當我打這個地址時,規則卻沒有重定向。

我還應該強調,我的web.config中有大約400個重寫,但只有3個包含%字符中斷。

+0

如果你只是使用普通的空間''呢?也許輸入字符串被解釋爲URL解碼的字符串。 –

+0

@stribizhev你是對的,謝謝! –

+0

Grea,我將其添加爲答案。 –

回答

2

由於對照正則表達式進行測試的字符串已經進行了Url解碼,因此您的正則表達式中不再需要%20。只需使用普通的空間:

<match url="^c80/How-to- Use-Shop-Name\.aspx" ignoreCase="true" /> 

另外,在殼體內的空間是可選的,您可以後使用?

<match url="^c80/How-to- ?Use-Shop-Name\.aspx" ignoreCase="true" /> 
+0

感謝您的解決方案。但只有當%20在中間時纔有效。如果%20在句子的最後,那麼它不起作用。你能幫忙嗎? – Juhi

+0

@Juhi你可以用'\ s *'匹配0或更多的空格。把它放在空間可能出現的模式中的任何地方。 –

+0

我的網址是「http://staging.Temp.com/about-us/Optimization-Institute-+target/%20但它不起作用 – Juhi