gpt4 book ai didi

regex - 如何在mod_rewrite中不匹配单词

转载 作者:行者123 更新时间:2023-12-04 03:30:51 25 4
gpt4 key购买 nike

请帮助,我快疯了!

RewriteRule ^([a-z0-9_-]+)?/?search/?$ search.php?id=$1&%{QUERY_STRING} [NC,L]

这是我当前的代码。有时人们会访问mysite.com/search,而其他时候他们会访问mysite.com/boris/search,而我检测到用户的空($ _GET ['id'])检查。

但是,我正在创建另一个搜索,即mysite.com/products/search,它导致了product_search.php

我需要原始的RewriteRule来匹配除“产品”一词外的任何用户。

我尝试了很多组合。
RewriteRule ^(!products&[a-z0-9_-]+)?/?search/?$ search.php?id=$1&%{QUERY_STRING} [NC,L]

我对regex/mod_rewrite不太满意,但是上面的东西应该可以工作吗?我只需要一个AND运算符就可以了,但它不起作用,但是我找不到一个!

提前谢谢了。

最佳答案

您有两种选择:使用RewriteCond限制已经匹配的字符串:

RewriteCond $1 !=products
RewriteRule ^([a-z0-9_-]+)?/?search/?$ search.php?id=$1&%{QUERY_STRING} [NC,L]

或者从Apache 2开始,您还可以使用否定的前瞻断言:
RewriteRule ^(?!products/)([a-z0-9_-]+)?/?search/?$ search.php?id=$1&%{QUERY_STRING} [NC,L]

除此之外,您还可以使用 QSA flag代替手动添加QUERY_STRING。请注意,您当前的模式也将允许使用 /foobarsearch/之类的内容,因此它没有单独的 /

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

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