2012-04-30 36 views
1

我一直在努力使:如何使用.htaccess mod重写将php url重定向为字符串?

http://site.com/file.php?x=foo 

重定向到:

http://newsite.com/something/completely/different/ 

使用下列内容:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteRule ^file\.php?x=foo$ http://newsite.com/something/completely/different/ [R=301,NC,L] 

</IfModule> 

但它不会做任何事情(只是加载老一套页面,就好像我从未接触过htaccess一样)。

有什么我失踪了吗?

非常感谢您的帮助!

回答

1

?.php结束时使最后p可选的(所以.phpx=foo.phx=foo将匹配)。这实际上并不被视为比赛中的角色。尝试逃脱?,如:\?

编辑

对于那些想知道的解决办法是:

查询字符串参数不传递到字符串匹配RewriteRule反对。所以你必须首先在QUERY_STRING上创建一个RewriteCond,然后匹配没有参数的url。例如: -

RewriteCond %{QUERY_STRING} x=foo 
RewriteRule ^file\.php$ http://newsite.com/something/completely/different/ [R=301,NC,L] 

有可能/希望更好的方法来做到这一点(因为这RewriteCond将向下级联到其他规则,这是烦人)。

+0

我试过了:RewriteRule^file \ .php \?x = foo $但是这似乎也不起作用。 – Jay

+0

消除前面的^ ^锚,看看是否有效。我不记得URL的mod_rewrite的哪一部分开始匹配。它可能会期待'^/file ...' – Matt

+0

不是,那也是不行的。 (既不删除^也不改变它^ /文件...工作) – Jay