我有一个regexp似乎在测试时工作正常at regexp101.com 但这并没有给我在mod_rewrite中的相同结果。
因此,我试图重写的URL是:
/modeles-voiture/Nissan/Qashqai+2
预期结果是:
/modeles.php?brand=Nissan&model=Qashqai+2
重写规则:
RewriteCond %{REQUEST_URI} ^/?modeles-voiture [NC]
RewriteRule \/([A-Z][\-A-Za-z]+)\/([\+\-A-Za-z0-9]+$) /modeles.php?brand=$1&model=$2 [L]
我从重写规则中得到的是:
/modeles-voiture/Nissan/Qashqai 2
请注意缺少的+号,它会在modeles.php
中抛弃我的脚本感谢您的帮助。
答案 0 :(得分:0)
我想你想要[B]旗帜。
看看这个问题的答案:How to encode special characters using mod_rewrite & Apache?
然后mod_rewrite会更改您的请求' / tag / c ++' to' script.php?tag = c ++'。但是在application / x-www-form-encoded格式的查询字符串组件中,转义规则与路径部分中应用的规则略有不同。特别是' +'是空间的简写(也可以编码为'%20',但这是我们现在永远无法改变的旧行为。)
因此,PHP的表单阅读代码接收了“c ++”和“c ++”。并将其作为C空间空间转储到_GET中。