Estoy tratando de crear una regla utilizada en un archivo .htaccess para que coincida con cualquier cosa excepto una cadena en particular, en este caso: index
..htaccess rewrite regex: coincide con cualquier cosa menos "índice"
pensé que debería ser posible para que coincida con esta cadena especial primero y utilizar [L]
pero eso no funciona,
y debería ser posible utilizando la siguiente expresión regular, pero causa un error 500.
Quiero coincidir:
- pagename1
- pagename2/lo que sea
- pagename3/234/lo que sea
- sobre
- contacto con nosotros
- (etc)
pero n ot
- índice/123
- índice/124/lo que sea
(BTW "índice" es el nombre de un archivo sin extensión, no es mi elección, esto es una cosa de trabajo)
^(?!index)[\w/\-]+
que asumen que la aplicación de expresiones regulares de Apache no hacer frente a la regla (?!xxx)
.
Cualquier ayuda/sugerencia será muy apreciada.
Solo pude hacer que esto funcionara al usar "! Index" en lugar de "!^Index". (Y sí, "índice" fue el comienzo de la cadena de solicitud, como en la pregunta de jezmck anterior). ¿Alguna idea de por qué este podría ser el caso? – rinogo
Lo resolvió. Incluso si está trabajando en un subdirectorio, el uso de "RewriteCond% {REQUEST_URI}" usa todo el URI de solicitud, por lo que debe incluir la ruta www al directorio actual. En mi caso, esto significa que utilicé: "RewriteCond% {REQUEST_URI}! ^/R/index $" (el archivo .htaccess en el que estoy trabajando está en el directorio 'r'). – rinogo