htaccess重写规则不适用于以.cfm结尾的网址

时间:2011-10-31 03:28:11

标签: apache .htaccess mod-rewrite redirect railo

我正在努力通过301重定向修复我的所有网址。我已经修复了几乎所有这些,但是有一个以.cfm结尾但不会重写的URL。

FROM: http://www.mydomain.com/index.cfm/catlink/17/pagelink/7/sublink/34/art/41/rec/1/page.cfm

TO: http://www.mydomain.com/story/resources/health/page/168/page.html

如果我将/page.cfm更改为/page.html,则重写将有效。

以下是适用于我的其他网址的重写规则

RewriteRule ^index.cfm/catlink/([a-zA-Z0-9/-]+)([/])pagelink/([a-zA-Z0-9/-]+)([/])sublink/([a-zA-Z0-9/-]+)([/])art/([a-zA-Z0-9/-]+)(.*)$ 

http://localhost/index.cfm?page=moved&cat=$3&subcat=$5&article=$7&story=$8 [R=301]

为什么URL以.html结尾但不以.cfm结尾时才有效?我做错了什么?

这是当前链接,不起作用:

http://www.mydomain.com/index.cfm/catlink/17/pagelink/7/sublink/34/art/41/rec/1/page.cfm

如果我手动将其结尾更改为.html,我可以让它工作:

http://www.mydomain.com/index.cfm/catlink/17/pagelink/7/sublink/34/art/41/rec/1/page.html

2 个答案:

答案 0 :(得分:2)

问题是Apache httpd在Apache查看.htaccess之前将其传递给Tomcat。要对此进行测试,请将重写规则移至vhost中。如果他们有效,那就是问题所在。

答案 1 :(得分:0)

首先,将您的RewriteRule的第一部分更改为以下更简洁的表达式:

^index.cfm/catlink/(\d+)/pagelink/(\d+)/sublink/(\d+)/art/(\d+)/(.*)$

我相信仅凭这一点就可以解决问题。但是,如果没有,并且不关心关于URL的其余部分,请尝试以下操作:

^index.cfm/catlink/(\d+)/pagelink/(\d+)/sublink/(\d+)/art/(\d+)/

注意:这会移除锚点($),因此允许该网址开放。