将URL重写为HTML文件,导致重写为.html /

时间:2010-02-08 09:15:55

标签: mod-rewrite url-rewriting apache2

我目前正在对我的博客网站进行大修,并找到了将所有当前页面转换为静态html页面的方法。他们目前正在使用友好的网址,它会重新映射到一个带有GET参数的中央index.php页面。

我想要做的改变是将这些相同的友好URL映射到他们的html对应物。我目前正在使用此规则:

RewriteRule ^archives?/([^/]+)/([^/.]+)/?$ archives/$1/$2.html

错误日志报告它无法找到blah.html/,这意味着它正在寻找.html目录,而不是.html文件。这是一个更好的例子:

/archives/2009/original-name

应该映射到

/archives/2009/original-name.html

但实际上已映射到

/archives/2009/original-name.html/

我在这里缺少什么?

3 个答案:

答案 0 :(得分:0)

你不需要反过来使用它吗?我没有测试代码,但它应该是这样的:

RewriteRule ^archives/(.*)/(.*).html archives/$1/$2

答案 1 :(得分:0)

我看不出你的正则表达式有什么明显错误。

猜测我会说你可能在这之后的某个地方有一个规则,它会将没有尾部斜杠的任何东西重定向到与斜杠相当的东西(这是避免重复内容问题的常见方法)。

答案 2 :(得分:0)

你没有在第二个陈述中逃避你的期限。试试这个。

RewriteRule ^archives?/([^/]+)/([^/\.]+)/?$ archives/$1/$2.html