2012-05-04 92 views
3

我正在將博客從dasBlog移動到BlogEngine。在dasBlog中,我的網址如下所示。URL重定向到BlogEngine

http://pfsolutions-mi.com/blog/2008/03/08/Beyond-Compare.aspx

而在BlogEngine,我的網址是這樣的。

http://pfsolutions-mi.com/blog/post/2008/03/08/Beyond-Compare.aspx

兩個URL之間的唯一區別是 「後」 在BlogEngine子文件夾中。

由於我目前使用IIS URL重寫從URL中刪除WWW,所以我認爲最簡單的解決方案是創建另一個規則來處理添加子文件夾。我嘗試過這樣的事情。

規則名稱= 「博客重定向」 啓用= 「真」 stopProcessing = 「真」

匹配URL =「^博客/([_ 0-9] +)/([_ 0-9] + )/([_ 0-9] +)/([_ 0-9a-z - ] +)。「([_ 0-9a-z - ] +)$」

action type =「Redirect」url =「blog /post/{R:1}/{R:2}/{R:3}/{R:4}.{R:5}「redirectType =」Temporary「

但是,當我輸入舊的dasBlog URL,它不會被重定向到新的位置。相反,我得到了通用的BlogEngine 404錯誤頁面。

注意:我計劃將redirectType更改爲永久,一旦我知道一切正常。

回答

1

你的匹配正則表達式不應該看起來更像這樣嗎?

match url="^blog/([0-9]+)/([0-9]+)/([0-9]+)/([\w-]+)\.([a-z]+)$" 

有日期的數字沒有下劃線反正和你[_0-9a-z-]+不包括大寫字母像「超越 - 比較」。

所以在這裏我們應該有:URL = 「^博客/數字/數字/數字/任何字,characters.lowercase-字母$」

我們也可以指定更多具有:

match url="^blog/([0-9]{2,4})/([0-9]{2})/([0-9]{2})/([\w-]+)\.([a-z]{3,4})$" 

基礎上,你總是有假設:

  1. 年爲 「08」 或 「2008」
  2. 月和日爲 「01」 或 「11」
  3. 文件結尾有3個或4小寫字母(HTM,HTML,PHP,ASP,ASPX等)

編輯:我覺得 「\ w +」 不包括連字符,所以你必須把它變成「 [\ w - ] +「

+0

對不起,但沒有解決問題。我懷疑這是一個「匹配網址」問題,因爲(您的和我的)正則表達式都通過了IIS管理器URL重寫實用程序中的匹配表達式測試。 –

+0

也許我們應該用最簡單的正則表達式來測試它(比如「^ blog /。* $「),如果確實不是我們可以搜索其他原因的問題,但是在大多數情況下,重寫的404s是由錯誤的正則表達式引起的。 – Simon