繁体   English   中英

在RewriteRule正则表达式方面需要帮助

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM