Regex 正则表达式无法识别mod_rewrite搜索查询中的斜杠(/)

Regex 正则表达式无法识别mod_rewrite搜索查询中的斜杠(/),regex,Regex,我似乎无法理解这一点。以下是重写规则: RewriteRule ^search\/(.*)$ index.php?route=product/search&filter_name=$1 RewriteRule ^search&(.*)$ index.php?route=product/search&$1 [QSA,L] RewriteRule ^search?(.*)$ index.php?route=product/search&$1 [QSA,L] 为…

我似乎无法理解这一点。以下是重写规则:

RewriteRule ^search\/(.*)$ index.php?route=product/search&filter_name=$1

RewriteRule ^search&(.*)$ index.php?route=product/search&$1 [QSA,L]

RewriteRule ^search?(.*)$ index.php?route=product/search&$1 [QSA,L]
为…工作

但是,这并不适用于

返回零结果,即使应该有结果

因为我使用的是通配符,那不应该包括斜杠吗?我在这里错过了什么

编辑:


现在,当我将斜杠直接写入URL栏时,它就可以工作了。。。但是,如果直接在搜索框中键入并重写为%2F,则不会。%也是保留字符吗?

您是否尝试只使用:

search/[a-zA-Z+?&/-]+

/
不是正则表达式中的保留字符,因此我认为它不必转义。这不是问题所在。已修改,但仍不工作。您需要在我假设的url中以%2F的形式转义斜杠。搜索功能会自动执行此操作。还是没什么。坦白说,我对正则表达式几乎一无所知。如何修改它以包含所有可能的字母、数字和允许的特殊字符?彼得:我当然会这样做,但是我没有这样做所需的声誉,因此我尝试以这种方式提供帮助。Furry只需在[]中添加选项,即可将其包含在url中。要包含数字,请使用0-9,这是一个范围(与a-z和a-z相同),其他所有数字都放在后面。例如[a-zA-Z+?&/-0-9_]+包括数字0-9以及下划线。加号意味着它必须至少出现一次。但是
不是包含所有这些字符和更多字符吗?是的,但也包含空格。这意味着匹配将是无限长的,直到字符串结束。本质上,我尝试允许所有字符,包括星号、克拉、美元符号、哈希符号等特殊字符。。。我们目录中的产品编号包含许多不同的符号,而不仅仅是标准的字母数字。所以如何将其设置为包含所有允许的字符,包括斜杠?我刚刚检查过,如果斜杠是手工写在URL栏中的,它可以工作,但是当它转换为%2F时就不工作了。