我正在努力通过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
答案 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+)/
注意:这会移除锚点($
),因此允许该网址开放。