3

我正在将博客从 dasBlog 转移到 BlogEngine。在 dasBlog 中,我的 URL 看起来像这样。

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

而在 BlogEngine 中,我的 URL 看起来像这样。

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

这两个 URL 之间的唯一区别是 BlogEngine 中的“post”子文件夹。

由于我目前正在使用 IIS URL Rewrite 从 URL 中删除 WWW,因此我认为最简单的解决方案是创建另一个规则来处理添加子文件夹。我尝试过这样的事情。

规则名称=“博客重定向”启用=“真”停止处理=“真”

匹配 url="^blog/([_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 更改为 Permanent。

4

1 回答 1

1

您的匹配正则表达式不应该看起来更像这样吗?

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

无论如何,日期数字中没有下划线,并且您[_0-9a-z-]+不包括“Beyond-Compare”中的大写字母。

所以在这里我们应该有: url="^blog/digits/digits/digits/any-word-characters.lowercase-letters$"

我们还可以指定更多:

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-]+"

于 2012-05-14T07:20:36.473 回答