.htaccess - 使用 mod_rewrite 时是否必须转义正斜杠?

标签 .htaccess mod-rewrite escaping

关于向 RewriteRule 或 RewriteCond 提供正则表达式时的正斜杠“/”,或者特别是与 .htaccess 相关的任何其他内容,是否需要转义正斜杠?

这是我想要实现的目标的示例

RewriteEngine on
RewriteOptions inherit

RewriteBase /uk-m-directory/
RewriteRule ^(region|region\/|regions\/)$ regions [R=301,L]
RewriteRule ^(county|county\/|counties\/)$ counties [R=301,L]
RewriteRule ^(city|city\/|cities\/)$ cities [R=301,L]

以上工作正常,当我删除反斜杠时,它继续工作正常,如下所示

RewriteEngine on
RewriteOptions inherit

RewriteBase /uk-m-directory/
RewriteRule ^(region|region/|regions/)$ regions [R=301,L]
RewriteRule ^(county|county/|counties/)$ counties [R=301,L]
RewriteRule ^(city|city/|cities/)$ cities [R=301,L]

哪一个是正确的方法?他们俩都错了吗? 是否有任何特殊原因应该或不应该转义正斜杠?

我的猜测是,据我所知,正斜杠不需要转义,因为它不是特殊字符。但我只是想确定一下。

如果您想知道这段代码的意义,它将城市、县和地区(带或不带正斜杠)重定向到其复数形式。此外,如果复数有正斜杠,它会删除正斜杠。

最佳答案

不,您不必转义斜杠。正斜杠在正则表达式中没有任何特殊含义。

过去困扰我的一个常见字符是查询字符串中的 ?。你必须逃离那个人。

关于.htaccess - 使用 mod_rewrite 时是否必须转义正斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3591452/

相关文章:

apache - .htaccess:无效命令 'Allow' ,可能拼写错误或由服务器配置中未包含的模块定义

apache - 通过 htaccess : incorrect redirection error 将 http 重定向到 https

php - 重写index.php最佳实践

php - preg_replace : add number after backreference

php - 使用htaccess时是不是不需要使用$_GET ['varName' ]?

php - joomla .htaccess 中的重写规则不起作用

php - 目录保护在我的 https 网站上要求输入密码两次?

apache - 使用 htaccess 进行子域重定向而不更改地址栏中的 URL

Java 转义 HTML

javascript - 双重转义 Unicode Javascript 问题