[英]Need help with RewriteRule Regex
我有这个网址: 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]
但是,我最终看到的URL如下所示: http:// localhost /?p = Artist%20One%20Demo / Title%20One && option = com_zina&Itemid = 82
换句话说,$ 2不会与任何东西匹配。 谁能告诉我为什么?
?
是一个特殊字符(选择上一个模式的0或1), .*
是贪婪的(将尽可能匹配,所以直到结束,因此$ 2将始终为空,因为$ 1会吃掉所有东西,直到该行的结尾。
查询字符串不在RewriteRule匹配的字符串中,并且通常在RewriteRule之前使用RewriteCond %{QUERY_STRING} pattern
检查查询字符串中的RewriteCond %{QUERY_STRING} pattern
。
但是,我们不需要涉猎正则表达式即可在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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.