2013-11-15 43 views
3

我设法拼凑的.htaccess这样的,它是工作的罚款的.htaccess多个变量重写

RewriteRule ^$ /splash [L,R=301]   
RewriteCond %{HTTP_HOST} ^example.com 
RewriteRule (.*) http://www.examle.com/$1 [R=301,QSA,L] 
RewriteRule ^([A-Za-z0-9-]+)?$ /index.php?cat=$1 [L] 

这重定向之类的东西example.com/onehttp://www.example.com/index.php?cat=one

然而,我想为当前项目添加更多功能,以便解析多个变量。因此,例如:

example.com/category-one?another_variable=some_data&even_more=more_data, etc... 

得到解析,以

http://www.example.com/index.php?cat=category-one&another_variable=some_data&even_more=more_data 

还有,就是这样的搜索引擎友好的解决方案?

回答

1

添加在最后一个规则QSA标志:

RewriteRule ^$ /splash [L,R=301] 

RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE] 

RewriteRule ^([a-z0-9-]+)/?$ /index.php?cat=$1 [L,NC,QSA] 
  • QSA(查询字符串附加)标志保留现有的查询参数,同时增加一个新的。
+0

好像它是工作对于前两个变量(cat和第二个变量),但是如果我再添加一个变量,则第二个变量的内容会填充为some_data?even_more = more_data – user2330401

+0

QSA标志将带有**任意数量的查询参数。提供一个它不工作的URL的例子。 – anubhava

+0

此URL不正确:'autobazar-ns.cz/garance-kvality?car = abcd?car2 = aaa' **因为URI中有2个'''** – anubhava

0

尝试这个重写规则^ MYDIR /([0-9] +)/(。*)$ myfile.php?VAR1 = $ 1 & VAR2 = $ 2 NC,L]