我已将我的网站迁移到新软件,并试图确保将旧链接正确重定向到新网址。我认为我一直在努力,直到我收到Google关于增加404的消息。模式匹配htaccess冲突
我似乎将导致新的htaccess需求和我的更改来解决旧的链接之间的冲突。
因此,新的链接看起来是这样的:
http://www.exampledomain.com/search/?q=searchterm
而在htaccess的他们拿起这样的:
RewriteRule ^search/(.*)$ search.php?q=$1
以上工作,因为它应该。
旧的链接可能类似于以下任一:
http://www.exampledomain.com/search/searchterm/
or
http://www.exampledomain.com/search/searchterm
我已经把这个到htaccess的
RewriteRule ^search/(.*)/$ http://www.exampledomain.com/search.php?q=$1 [R=301,NC,L]
如果我不添加的第一个规则,则新的URL只是调出404的。
如果我添加第二条规则,它将停止传递的searchterm并与第一条规则冲突。
已经尝试了一些东西,但认为必须有匹配或其他我失踪的问题。
任何想法赞赏。
** **新增
所以我作出改变的建议,并就引起了几个问题,但交换的规则的顺序已经固定的,但还没有完全解决了该问题
第一答复后所以现在我有这样的:
RewriteRule ^search/(.*)/?$ http://www.exampledomain.com/search.php?q=$1 [R=301,NC,L]
RewriteRule ^search/(.*)$ search.php?q=$1
上述工作对于这些网址现在:
http://www.exampledomain.com/search/?q=searchterm
and
http://www.exampledomain.com/search/searchterm
但对于网址是这样的:
http://www.exampledomain.com/search/searchterm/
它导致这与防止搜索结尾的斜线:
http://www.exampledomain.com/search.php?q=drama/
所以只需要删除或没有结尾的斜线
您的问题可能更适合于[serverfault](http://serverfault.com/):) –