2013-03-24 158 views
0
RewriteRule new/$ /search.php?category=1 
RewriteRule new/\?(.+)$ /search.php?category=1&$1 

我试图做这样的事情,如果下面的地址链接被访问,的.htaccess重写规则不工作

http://onlineshop.com/new/ 
http://onlineshop.com/new/?price_max=30 

然后它会打开这个链接,

http://onlineshop.com/new/search.php?category=1 
http://onlineshop.com/new/search.php?category=1&price_max=30 

不幸的是,它不是这样工作。

回答

1

一个RewriteRule自然不会赶上查询字符串参数,你必须使用这种.htaccess

RewriteCond %{QUERY_STRING} ^(.*)$ 
RewriteRule ^new/$ /search.php?category=1&%1 
+0

你是一个天才! :) – 2013-03-27 02:31:23

+0

但为什么我的工作不正常? :S – 2013-03-27 02:31:53

+0

基本的'RewriteRule'不会捕获GET参数中的任何内容,这就是为什么你的第二条规则不起作用。我的'RewriteCond'在这里将查询字符串放入一个变量('%1')中。 – zessx 2013-03-27 09:27:22

0

你可以只是简单的从/new重定向到/search.php与QSA标志和Apache将追加现有请求参数。像这样的东西将为你工作:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule ^new/?$ /search.php?category=1 [L,QSA,NC]