With regards to the forward slash "/" when giving a regex to RewriteRule or RewriteCond, or anything else related to .htaccess in particular, is there a need to escape the forward slash?
Here is an example of what I am trying to achieve
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]
The above works fine, and it continues to work fine when I remove the backslashes as shown below
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]
Which one is the correct way? Are they both wrong? Есть ли какая-то особая причина, по которой передняя косая черта должна быть экранирована или нет?
Я предполагаю, что переднюю косую черту не нужно экранировать, поскольку, насколько я знаю, это не специальный символ. Но я просто хочу быть уверен.
В случае, если вам интересен смысл этого кода, он перенаправляет город, округ и регион (с косой чертой или без нее) на их множественные эквиваленты. Кроме того, если множественное число имеет косую черту, оно удаляет косую черту.
Нет, экранировать косые черты не нужно. Косая черта не имеет особого значения в регулярных выражениях.
Один распространенный символ, который меня укусил в прошлом, — это ?
в строках запроса. От которого тебе нужно убежать.