我正在使用以下代码使用GET vars重写uri请求到我的index.php文件
RewriteRule ^([^/]+)/$ index.php?parent=$1 [L]
RewriteRule ^([^/]+)/([^/]+)(/)?$ index.php?parent=$1&child=$2 [L]
所以网址
mysite.com/category/article // resolves to
$_GET['parent'] = category
$_GET['child'] = article
我对导航的URL进行编码,以便
mysite.com/dates-&-events/ becomes mysite.com/dates-%26-events/
然而这会破坏mod_rewrite解析为
$_GET['parent'] = dates-
过早地打破了弦乐。 如何更改正则表达式以在组中包含已编码的保留字符?
答案 0 :(得分:0)
我认为您正在寻找B
flag:
[B]标志指示RewriteRule在应用转换之前转义非字母数字字符。
mod_rewrite必须在映射URL之前对其进行unescape,因此反向引用将在应用它们时未转义。使用B标志,后向引用中的非字母数字字符将被转义。