需要用重写规则正则表达式帮助
问题描述:
我有这个网址: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没有与任何东西匹配。谁能告诉我为什么?
答
?
是一个特殊字符(选择0或上一模式1),.*
是贪婪(将匹配尽可能可以去,所以才结束,因此$ 2将总是为空用$ 1什么都吃,直到该行的末尾。
查询字符串不是重写规则对匹配的字符串,并在查询字符串检查模式通常与RewriteCond %{QUERY_STRING} pattern
前完成RewriteRule。
然而,我们并不需要用正则表达式来涉足获得在URL中的查询字符串:“?”
RewriteRule ^zina/(.*)$ /?p=$1&option=com_zina&Itemid=82 [L,R,QSA]
答
这是关闭袖口,没有测试,但它看起来像你不逃避你?在重写正则表达式,以便它将字面处理它。
试试这个也许
RewriteRule ^zina/(.*)\?(.*)$ /?p=$1&$2&option=com_zina&Itemid=82 [L,R]
重写规则不能在所有的工作,如果我逃 – Malfist 2010-10-13 16:41:53