2012-01-02 13 views
9

Sto cercando di escludere tutti i file che iniziano con "dgg-" e termina a ".xml", ad esempio: DGG-file-1.xml di utilizzare l'apache proxy.Apache ProxyPass - Escludi file Regex

Questo funziona:

ProxyPass /myfile.xml ! # single file 
ProxyPass /directory ! # all files inside dir 

Questo non funziona:

ProxyPass /dgg-(.*)\.xml !

Come posso raggiungere questo obiettivo?

PS- sto usando questo codice all'interno del httpd.conf->virtualhostnon.htaccess.

+0

Definire "non funziona"? Cos'altro c'è nel file? – fge

risposta

13

Utilizzare ProxyPassMatch. ProxyPass prevede elementi di percorso completamente scritti, non accetta espressioni regolari.

Come ProxyPassMatch prende una regex, questo significa che è necessario anche ancorarlo:

ProxyPassMatch ^/dgg-[^.]+\.xml$ ! 
+0

Questo è esattamente ciò di cui avevo bisogno. Grazie! –

2

avevo una situazione in cui volevo poche immagini di essere scelto dal webserver Apache e poche immagini da includere dal server di applicazioni (Nel mio caso Jboss). Quindi volevo una regex che doveva sia escludere che includere. Ecco cosa ho aggiunto al file httpd.conf sotto il tag VirtualHost.

Ci sono alcuni file css e js che si trovano in jsf jars e jenia popup jar che noi non troveremo sul webserver. Quindi, raggiungi il server delle app. L'espressione regolare è alla ricerca di tutti gli URL * .js e * .css ma esclude qualsiasi URL che contiene/jenia4faces e/faces. Questo per assicurarsi che gli script come /MYWEBAPP/jenia4faces/popup/popupFrame/js/popupFrame.js e /MYWEBAPP/faces/myFacesExtensionResource/tabbedpane.HtmlTabbedPaneRenderer/11302665/dynamicTabs.js siano ancora estratti dal server delle app. Tutti i file .js e .css verranno serviti dal server web.

dove/MYWEBAPP è il mio contesto root per le app Web. Inoltre (? Facce) indica se l'url non ha "facce" nel percorso dell'URL.

+1

Grazie! Grazie! Grazie! Sto usando Apache 2.4 con php5-fpm e un ProxyPassMatch su fcgi. Tuttavia, escludere una cartella da passare si stava rivelando sempre più frustrante. Dopo aver cercato un po 'di tempo per una soluzione, questo finalmente ha funzionato. Nel caso in cui qualcun altro debba vedere come funziona insieme (ad esempio per un'installazione di Drupal in cui la cartella dei file non dovrebbe consentire l'esecuzione di php): 'ProxyPassMatch^(/ sites/default/files/(. * \. Php (/ . *)?)) $! ' ' ProxyPassMatch ^/(. * \. Php (/.*)?)$ fcgi: //127.0.0.1: 8000/var/www' 'AddHandler php5-fcgi .php ' – casafred

+0

casafred felice ha funzionato per te !! – Reddymails