2013-02-28 10 views
8

Volevo servire i file .xhtml comeCome posso evitare il segno di barra `/` in Apache `<If> espressione regolare della direttiva`?

  • application/xhtml+xml se il browser dice che accetta.
  • text/html altrimenti

Ho provato a fare con mod_rewrite ma non ha funzionato con Options -FollowSymLinks (vedi Why I do I get 403 Forbidden when viewing files affected by Apache RewriteRule if I have `Options -FollowSymLinks`?).

Poi, ho provato

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

Ma ottengo un errore di sintassi: Failed per compilare espressione regolare.

Nel frattempo, io uso questo codice ...

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

... che funziona, ma voglio che corrisponda al tipo MIME corretto.

risposta

9

È possibile utilizzare un codice di escape come \x2F anziché /.

4

Sembra come migliorare questo è ancora in costruzione da Apache 2.4. Il membro del team di Apache "covener" recommendsm#regexp# invece.

Così il vostro codice sarà simile a questa ...

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

non riesco a vedere che comment_3455 da Covener. Ma la sezione [Other] (http://httpd.apache.org/docs/2.4/expr.html#other) dice 'm # regexp #' è un'alternativa di '/ regexp /'. – Oriol

+0

Strano, l'ancora mi spara direttamente alla risposta corretta della discussione. Ma anche ottima scoperta sulla tabella ufficiale della documentazione Altro. – lkraav

+1

'm # regexp #' funziona bene per me quando si valuta contro 'REQUEST_URI', che avrà barre in avanti in uno scenario tipico. – RjOllos

Problemi correlati