2016-02-26 99 views
0

我已将我的网站迁移到新软件,并试图确保将旧链接正确重定向到新网址。我认为我一直在努力,直到我收到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/

所以只需要删除或没有结尾的斜线

+0

您的问题可能更适合于[serverfault](http://serverfault.com/):) –

回答

1

我认为你只是在规则中缺少?,因为/是可选的:

RewriteRule ^search/(.*)/?$ search.php?q=$1 [R=301,NC,L]

更新来解决斜线:

我猜的.*在下次使用前治后/。为了解决这个问题,我们需要从比赛中排除:其中参数出现斜线后

RewriteRule ^search/([^/]*)/?$ search.php?q=$1 [R=301,NC,L]

更新,以解决增加的情况下:

我不知道,如果你的意思是字面上/search/q=searchstr/search/?q=searchstr所以我会尝试解决这两种情况。

如果是后者,这是一个真正的查询字符串,将为了转嫁给新的URL查询字符串中使用QSA上面的第一个规则:

RewriteRule ^search/$ search.php [R=301,NC,QSA,L]

为了解决第一个变化(不?查询字符串),你就需要把这个规则之上的第一,字面看起来为q=

RewriteRule ^search/q=(.*)$ search.php?q=$1 [R=301,NC,L]

而且因为我得到的感觉,你会再次更新这个问题想请教一下,如果有一个尾随斜线,我会继续和修改规则来处理这种情况下,会发生什么:

RewriteRule ^search/q=([^/]*)/?$ search.php?q=$1 [R=301,NC,L]

如果这些规则仍然不能解决您的每个案例,那么您正在处理您之前的网址中的一些非常糟糕的代码,我为您感到非常遗憾。:P

+0

嗨,感谢你 - 它几乎工作,并已得到另一个网址工作,但仍有问题添加了结果到上面的问题,但基本上它留下了一个斜线现在 – OLM256

+0

感谢您的更新和你的时间 - 这三个主要的URL的工作辉煌。它现在停止了一种类型,其URL类似于/ search/q = searchterm,因为它现在无法通过searchterm。虽然我可能只是改变这个编码,但我不确定它可以在不与其他人冲突的情况下解决,因为主要编码正在工作。 – OLM256

+0

嗯,我只能说....非常感谢!所有工作现在完美,我感谢您的耐心和时间更新答案。我错过了错过的道歉?在以前的答复中,并导致你额外的工作。它为我节省了几千美元的谷歌网址,这是最多变种的网址。 – OLM256