Domanda

E 'stato un po' da quando ho pasticciato con .htaccess e io non riesco a ottenere questo giusto. Ho un sito, ad esempio example.com, dove voglio example.com/* per reindirizzare example.com/collector.html tranne per gli URL sotto l'example.com/special sottodirectory, che voglio di continuare a lavorare.

Ad esempio:

  • example.com/page.html dovrebbe reindirizzare example.com/collector.html
  • example.com/foo/bar dovrebbe reindirizzare example.com/collector.html
  • example.com/special/page.html non dovrebbe reindirizzare

avrei pensato che qualcosa di simile

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

farebbe il trucco, ma non sembra funzionare il modo in cui voglio che.

È stato utile?

Soluzione

Forse questo? (Necessita mod_rewrite)

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

Altri suggerimenti

Questo funziona bene per me su Apache 2.2.13, dove ho ricreato la struttura di directory che hai descritto.

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

Il modello tra parentesi sta dicendo non corrispondono se l'URI contiene la stringa 'speciale'.

Anche mod rewrite non è sempre disponibile e in questo caso non è necessario.

Prova questo:

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

Forse ...?

RewriteEngine on
RewriteRule ^(?!special) collector.html [R,NC]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top