Frage

Es ist schon eine Weile her, seit ich mit .htaccess versaut habe und ich kann das nicht ganz richtig zu machen scheinen. Ich habe eine Seite, sagen example.com, wo ich example.com/* wollen umleiten example.com/collector.html außer für URLs unter dem Unterverzeichnis example.com/special, die ich will weiter zu arbeiten.

Zum Beispiel:

  • example.com/page.html sollte umleiten example.com/collector.html
  • example.com/foo/bar sollte umleiten example.com/collector.html
  • example.com/special/page.html sollte nicht umleiten

Ich hätte gedacht, dass so etwas wie

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

würde den Trick tun, aber es scheint nicht die Art und Weise arbeiten ich es will.

War es hilfreich?

Lösung

Vielleicht? (Muss mod_rewrite)

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

Andere Tipps

Dies funktioniert gut für mich auf Apache 2.2.13, wo ich die Verzeichnisstruktur neu erstellt Sie beschrieben.

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

Das Muster in den Klammern sagt nicht übereinstimmen, wenn die URI die Zeichenfolge ‚besondere‘ enthalten.

Auch mod Rewrite ist nicht immer verfügbar und in diesem Fall ist nicht erforderlich.

Versuchen Sie folgendes:

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

Vielleicht ...?

RewriteEngine on
RewriteRule ^(?!special) collector.html [R,NC]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top