gpt4 book ai didi

regex - 如何匹配.htaccess中的问号

转载 作者:行者123 更新时间:2023-12-02 21:03:46 26 4
gpt4 key购买 nike

我的 .htaccess 中有以下正则表达式

RewriteRule ^([a-z]+)/([a-z]+)/\?(.+)$ ./default.php?controller=$1&action=$2&$3

我期待,如果我提供像 mysite.com/controller/action/?v=2 这样的 URL,它将被转换为 mysite.com/default.php?controller=controller&action = Action &v=1

但是,它不起作用。我尝试做

RewriteRule ^([a-z]+)/([a-z]+)/[?](.+)$ ./default.php?controller=$1&action=$2&$3

RewriteRule ^([a-z]+)/([a-z]+)/[\?](.+)$ ./default.php?controller=$1&action=$2&$3

没有一个有效。然后我尝试更换? (问号)x

RewriteRule ^([a-z]+)/([a-z]+)/x(.+)$ ./default.php?controller=$1&action=$2&$3

并尝试传递类似 mysite.com/controller/action/xv=2

的 URL

效果正如预期的那样。我尝试测试我的正则表达式,看起来没问题。我做错了什么?

最佳答案

规则本身未检测到查询字符串。作为引用,需要使用单独的条件来检查这些条件,该条件检查 QUERY_STRING 的值。

但是,您实际上不需要在您的情况下执行此操作,因为您只需要使用 QSA(查询字符串附加)标志来附加 v=1新 URI 的查询参数。

RewriteRule ^([^/]+)/([^/]+)/$ default.php?controller=$1&action=$2 [QSA,L]

现在,当请求 /mycontroller/myaction/?v=1 时,Apache 将提供 default.php?controller=mycontroller&action=myaction&v=1

如果您想让最后一个尾部斜杠可选,请在其后面添加一个问号 (^([^/]+)/([^/]+)/?$) .

仅供引用,[^/]+ 表示“一个或多个不是正斜杠的字符”。

关于regex - 如何匹配.htaccess中的问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37018649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com