2010-10-13 81 views
0

我有这个网址:http://localhost/zina/Artist%20One%20Demo?l=8&m=10&c ,它需要成为:http://localhost/?p=Artist%20One%20Demol=8&m=10&c&option=com_zina&Itemid=82需要用重写规则正则表达式帮助

我使用这个重写的网址:

RewriteRule ^zina/(.*)?(.*)$ /?p=$1&$2&option=com_zina&Itemid=82 [L,R] 

不过,我风与网址看起来像这样:http://localhost/?p=Artist%20One%20Demo/Title%20One&&option=com_zina&Itemid=82

换句话说,$ 2没有与任何东西匹配。谁能告诉我为什么?

回答

1

?是一个特殊字符(选择0或上一模式1),.*是贪婪(将匹配尽可能可以去,所以才结束,因此$ 2将总是为空用$ 1什么都吃,直到该行的末尾。

查询字符串不是重写规则对匹配的字符串,并在查询字符串检查模式通常与RewriteCond %{QUERY_STRING} pattern前完成RewriteRule。

然而,我们并不需要用正则表达式来涉足获得在URL中的查询字符串:“?”

RewriteRule ^zina/(.*)$ /?p=$1&option=com_zina&Itemid=82 [L,R,QSA] 
0

这是关闭袖口,没有测试,但它看起来像你不逃避你?在重写正则表达式,以便它将字面处理它。

试试这个也许

RewriteRule ^zina/(.*)\?(.*)$ /?p=$1&$2&option=com_zina&Itemid=82 [L,R] 
+0

重写规则不能在所有的工作,如果我逃 – Malfist 2010-10-13 16:41:53