2017-02-03 115 views
0

我有一段JavaScript代碼,當用戶轉到mypage而沒有查詢字符串時,我重定向到具有特定查詢字符串的同一頁面。IIS URL重定向到具有不同查詢字符串的同一頁面

我認爲這是更好地與一個IIS URL重寫規則要做到這一點,是這樣的:

<rules> 
    <rule name="mypage" stopProcessing="true"> 
    <match url="/mypage/*$" />  
    <action type="Redirect" url="/mypage/?category=shopping" appendQueryString="true" /> 
    </rule> 
</rules> 

它只是不工作。

我用IIS工具測試了正則表達式,它很好,重寫規則也是由IIS選取的,因此在那裏應該沒有問題。我將appendQueryString設置爲true和false,以防萬一。但在兩種情況下都不起作用。爲了以防萬一,我嘗試了「重寫」和「重定向」兩種操作類型。沒有工作。

你能幫忙嗎?謝謝。

+0

我希望在URL中看到新的查詢字符串,因此「重定向」操作類型是首選。 –

回答

1

您需要刪除匹配網址中的第一個斜槓。你還需要檢查查詢字符串已經在那裏,否則它將進入無限重定向循環。如果您重寫,則不會出現此問題

<rule name="mypage" stopProcessing="true"> 
     <match url="^mypage/*$" /> 
     <action type="Redirect" url="/mypage/?category=shopping" appendQueryString="true" /> 
     <conditions> 
     <add input="{QUERY_STRING}" pattern="category=shopping" negate="true" /> 
     </conditions> 
    </rule> 
+0

謝謝Jeroen。第一個斜槓是必需的。你的正則表達式可以匹配「www.mysite.com/this-is-mypage」,這在我的情況下是不希望的。你能對你答案的第二部分更具體嗎?我如何「檢查查詢字符串已經在那裏」? –

+0

如果您想避免匹配「www.mysite.com/this-is-mypage」,那麼您需要使用^,以便它在URL的開始處開始匹配。你可以添加查詢字符串作爲條件並取消它,以便匹配查詢字符串以避免重定向循環。我用完整的規則更新了我的原始答案。 – Jeroen

+0

謝謝Jeroen! ;-) –

相關問題