2011-06-29 43 views
0

对具有查询字符串的/的任何请求都会导致404被触发。我发现如果我在查询字符串之前添加/shop/,它将在内部重定向,并且不会触发404。重定向到目录,保留查询字符串

我需要一个通用的mod_rewrite规则,将采取一个URL的形式:

http://www.example.com/?foo=bar 

,重定向到:

http://www.example.com/shop/?foo=bar 

在查询字符串(可以是任何东西)被保留。

+0

据我了解,你想有只1重写(不定向),所以当'/?富=请求bar'然后它实际上是'是被执行/店/?富= bar'(URL保持不变),对吧? – LazyOne

+0

当任何*查询字符串存在时,主页'/'出于某种原因返回404,但'/ shop /'可以正常工作。重写或重定向应该适用于任何数量的查询参数和任何参数名称,而不仅仅是“foo”。 – Jazzerus

回答

0

这将重定向(URL会改变)全部点击进入ROOT(例如http://www.example.com/),其具有查询字符串为http://www.example.com/shop/

RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} !^$ 
RewriteRule ^$ http://www.example.com/shop/ [QSA,R,L] 

这将改写内部(URL会留在浏览器相同)全部点击进入ROOT(例如http://www.example.com/),其具有查询字符串为http://www.example.com/shop/

RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} !^$ 
RewriteRule ^$ /shop/ [QSA,L] 
+0

我应该提到该网站是建立在Miva Merchant上的,并且/ shop /会自动重定向到/在内部。 RewriteRule的添加会导致无限重定向循环。我需要一个仅适用于带查询字符串的URL的规则,因为查询字符串在内部重定向到/时会被剥离。 – Jazzerus

+0

@Jazzerus还有什么其他的**“小细微的细微差别”**你有吗?这已经改变了所有的**,并且不知道你现有的重定向是如何完成的(Miva Merchant),我所能想到的任何东西都只是一种“疯狂猜测”。您必须查看您现有的重写规则并找出其无效的原因。 – LazyOne

+0

我想也许我的问题并不清楚。我需要一个仅在存在查询字符串时才起作用的解决方案。如果用户转到example.com而没有查询字符串,则不应将其重定向到example.com/shop。 – Jazzerus

相关问题