2010-08-28 14 views
16

Con respecto a la barra inclinada "/" cuando se da una expresión regular para RewriteRule o RewriteCond, o cualquier otra cosa relacionada a .htaccess en particular, hay una necesidad de escapar de la barra diagonal?¿Tienes que escapar de una barra inclinada cuando usas mod_rewrite?

Aquí es un ejemplo de lo que estoy tratando de lograr

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] 

Lo anterior funciona bien, y se sigue trabajando bien cuando quito las barras invertidas como se muestra a continuación

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] 

Cuál es la forma correcta? ¿Están ambos equivocados? ¿Hay alguna razón especial por la que la barra diagonal se escape o no debería?

Mi conjetura es que la barra diagonal no necesita ser escapado porque no es un carácter especial, por lo que yo sé. Pero solo quiero estar seguro.

En caso de que se esté preguntando el punto de este código, se redirige ciudad, condado, y la región (con o sin una barra inclinada) a sus equivalentes plural. Además, si el plural tiene una barra diagonal, elimina la barra diagonal.

Respuesta

15

No, no tiene que escapar de las barras. Las barras diagonales delanteras no tienen ningún significado especial en las expresiones regulares.

El único personaje común que me ha mordido en el pasado es ? en cadenas de consulta. Ese que tienes que escapar.

+0

Muchas gracias John por la respuesta rápida = D Una pregunta rápida de suministro John, si no le importa, en relación con su "?" comentario. Sé que tiene que ser escapado (el questionmark), pero ¿y si está en el lado derecho de la regla? Digamos por ejemplo "RewriteRule ^/([a-z0-9] +) $ /index.php?query=$1" ¿el cuestionario en el lado derecho (index.php?) Tiene que ser escapado? Sé que no tiene que ser así, pero ya sabes, solo asegúrate. – TrainTC

+0

Corrija de nuevo. Solo en el lado izquierdo. –

-4

Tienes que escapar de la barra hacia atrás, pero si utiliza barra diagonal entonces usted no tiene que por lo menos en el archivo de configuración my.ini (MySQL).

+1

MySQL no tiene nada que ver con mod_rewrite, sin embargo. – Makoto

Cuestiones relacionadas