2013-02-28 2 views
8

Ich wollte Dateien alsWie kann ich Slash-Zeichen `/` in Apache `<If>` Regex der Direktive entkommen?

  • application/xhtml+xml dienen .xhtml, wenn der Browser sagt, dass es sie akzeptiert.
  • text/html sonst

Ich versuchte es mit mod_rewrite zu tun, aber es hat nicht funktioniert mit Options -FollowSymLinks (siehe Why I do I get 403 Forbidden when viewing files affected by Apache RewriteRule if I have `Options -FollowSymLinks`?).

Dann habe ich versucht,

<Files "*.xhtml"> 
    <If "%{HTTP:Accept} !~ /application\/xhtml\+xml/"> 
     ForceType text/html 
    </If> 
</Files> 

Aber ich bekomme einen Syntaxfehler: fehlgeschlagen regulären Ausdruck zu kompilieren.

Inzwischen verwende ich diesen Code ...

<Files "*.xhtml"> 
    <If "%{HTTP:Accept} !~ /xhtml\+xml/"> 
     ForceType text/html 
    </If> 
</Files> 

... das funktioniert, aber ich möchte den richtigen MIME-Typ entsprechen.

Antwort

9

Sie könnten einen Escape-Code wie anstelle der / verwenden.

4

Es sieht so aus, als ob die Verbesserung von Apache 2.4 noch im Aufbau ist. Apache Teammitglied "covener" recommendsm#regexp# stattdessen.

So würde der Code wie folgt aussehen ...

<If "%{HTTP:Accept} !~ m#application/xhtml\+xml#"> 
+1

ich das comment_3455 von Covener nicht sehen kann. Aber der Abschnitt [Other] (http://httpd.apache.org/docs/2.4/expr.html#other) sagt 'm # regexp #' ist eine Alternative zu '/ regexp /'. – Oriol

+0

Seltsam, der Anker schießt mich direkt auf die richtige Gesprächsantwort. Aber auch super finden Sie auf der offiziellen Other-Dokumentationstabelle. – lkraav

+1

'm # regexp #' funktioniert gut für mich bei der Auswertung gegen 'REQUEST_URI', die in einem typischen Szenario Schrägstriche haben wird. – RjOllos

Verwandte Themen