我正在将我的博客从 LAMP/PHP 迁移到 IIS。为了保留 URL,我使用了 URL 重写模块。在 192 页中,这适用于 191 页。基本上我需要用目录名称替换 URL 的“index.php”部分并附加一个“.html”后缀。
我的正则表达式模式:
^myblog/index\.php/(.+)
我的重写网址:
myblog/contents/{R:1}.html
这在大多数情况下都有效,重写
http://www.MYSITE/myblog/index.php/2013/04/29/goto_slides
至
http://www.MYSITE/myblog/contents/2013/04/29/goto_slides.html
但是,它在一种情况下失败:
http://www.MYSITE/myblog/index.php/2013/04/29/goto_notes_evolving_java
这将返回 404,错误页面显示请求的 URL 是:
http://MYSITE:80/myblog/contents/2013/04/29/goto_notes_evolving_java
(请注意,未添加“.html”后缀;添加该后缀可找到该页面。)
我能看到的 URL 之间的唯一区别是有效的 URL 和无效的 URL 是尾随的“java”。
我该如何解决或解决这个问题?
web.config,每个请求:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
<rewrite>
<rules>
<clear />
<rule name="Rewrite blog URL from old PHP location" stopProcessing="true">
<match url="^myblog/index\.php/(.+)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="myblog/contents/{R:1}.html" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>