Pregunta

Ha sido un tiempo desde que he metido con .htaccess y me parece que no puede obtener esta todo bien. Tengo un sitio, por ejemplo example.com, donde quiero example.com/* para redirigir a example.com/collector.html excepto para URL bajo el subdirectorio example.com/special, que quiero para seguir trabajando.

Por ejemplo:

  • example.com/page.html debe redirigir a example.com/collector.html
  • example.com/foo/bar debe redirigir a example.com/collector.html
  • example.com/special/page.html no debe redirigir

Me habría pensado que algo así

RedirectMatch 302 ^/[^(special)]/.* /collector.html
RedirectMatch 302 ^/[^(collector.html)/]* /collector.html

que hacer el truco, pero no parece funcionar de la manera que quiero que haga.

¿Fue útil?

Solución

Tal vez esto? (Necesita mod_rewrite)

RewriteEngine On
RewriteRule !^(special(/.*)?|collector\.html)$ collector.html [R,L]

Otros consejos

Esto funciona muy bien para mí en Apache 2.2.13 en el que recreó la estructura de directorios que usted describió.

RedirectMatch 302 /(?!special)  http://www.example.com/collector.html

El patrón de los soportes está diciendo no coinciden si el URI contiene la cadena 'especial'.

También mod reescribir no siempre está disponible y en este caso no es necesario.

Prueba esto:

RedirectMatch 302 /\/[^(special)]\/.+/ /collector.html 
RedirectMatch 302 /\/[^(collector\.html)]/ /collector.html

Tal vez ...?

RewriteEngine on
RewriteRule ^(?!special) collector.html [R,NC]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top