关于向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]
哪一个是正确的方法?他们都错了吗? 是否有任何特殊原因应该逃避正斜杠,或者不应该这样做?
据我所知,我的猜测是正斜杠不需要被转义,因为它不是一个特殊字符。但我只想确定。
如果您想知道此代码的含义,它会将城市,县和地区(带或不带正斜杠)重定向到其复数等值。此外,如果复数具有正斜杠,则会删除正斜杠。
答案 0 :(得分:18)
不,你不必逃避斜线。正斜杠在正则表达式中没有任何特殊含义。
过去咬过我的一个常见字符是查询字符串中的?
。那个你必须逃脱。