2015-08-28 185 views
3

我有一個腳本來代替example.com/folder/index.php/pagenameexample.com/pagename重寫ASP URL並獲取重定向循環

example.com/pagename在技術上並不存在 - 所以如果有人導航到它,他們得到了404

我想在我的web.config文件看起來添加重定向的,如:

<rewrite> 
<rules> 
<rule name="my redirect" stopProcessing="true"> 
<match url="pagename" /> 
<action type="Redirect" url="http://www.example.com/folder/index.php/pagename/" redirectType="permanent" appendQueryString="false" /> 
</rule> 
</rules> 
</rewrite> 

但它會導致重定向循環。我注意到,如果我將最終的網址更改爲example.com/pagenamealternate之類的其他網址,它的工作原理就很好。

任何人都可以告訴我,如果有一個方便的條件或解決這個問題的替代方法?

回答

1

由於您的模式pagename也與其中的pagename匹配的目標網址匹配,您將收到重定向循環。

你匹配的網址更改爲^pagename$,現在重寫規則只踢了具有確切的URL請求:example.com/pagename,你可能要允許頁面名後附加文本,然後用:^pagename作爲匹配模式。 在正則表達式中的^意味着字符串的開始,這是可行的,因爲重寫引擎會查看主機名部分後的所有內容。

還考慮重寫操作而不是重定向。

+0

將'pagename'改爲'^ pagename $ ^'訣竅!非常感謝! – Remie