2012-01-02 31 views
9

staram się wykluczyć wszystkie pliki zaczynające się "dgg-" a kończąc w ".xml", przykład: DGG-file-1.xml z pomocą apache pełnomocnik.Apache ProxyPass - Wykluczanie plików Regex

To działa:

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

To nie działa:

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

W jaki sposób można to osiągnąć?

PS Używam tego kodu wewnątrz httpd.conf->virtualhostnie.htaccess.

+0

Definiowanie "nie działa"? Co jeszcze jest w pliku? – fge

Odpowiedz

13

Użyj ProxyPassMatch. ProxyPass oczekuje w pełni zapisanych elementów ścieżki, nie akceptuje wyrażeń regularnych.

Jak ProxyPassMatch wykonuje regex, oznacza to trzeba też zakotwiczyć go:

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

Dokładnie tego potrzebowałem. Dzięki! –

2

miałem sytuację, gdzie chciałem kilka obrazów do odbioru z serwera WWW Apache i kilka obrazów, które należy uwzględnić z serwera aplikacji (W moim przypadku Jboss). Tak więc chciałem jednego wyrażeń regularnych, które musiałem wykluczyć i dołączyć. Oto co dodałem do pliku httpd.conf w tagu VirtualHost.

Istnieje kilka plików css i js, które znajdują się w jsf jarach i słoikach jenia popup, których nie znajdziemy na serwerze internetowym pod numerem . W tym celu należy skontaktować się z serwerem aplikacji. Wyrażenie regularne szuka wszystkich adresów URL * .js i * .css, ale wyklucza adresy URL zawierające/jenia4faces i/faces. Ma to na celu upewnienie się, że skrypty takie jak /MYWEBAPP/jenia4faces/popup/popupFrame/js/popupFrame.js i /MYWEBAPP/faces/myFacesExtensionResource/tabbedpane.HtmlTabbedPaneRenderer/11302665/dynamicTabs.js nadal są pobierane z serwera aplikacji. Wszystkie pliki .js i .css będą obsługiwane przez serwer WWW.

ProxyPassMatch ^(/MYWEBAPP/(?!jenia4faces).*\.js)$ ! 
    ProxyPassMatch ^(/MYWEBAPP/(?!faces).*\.css)$ ! 
    ProxyPassMatch ^(/MYWEBAPP/(?!jenia4faces).*\.js)$ ! 
    ProxyPassMatch ^(/MYWEBAPP/(?!faces).*\.css)$ ! 

gdzie/MYWEBAPP jest kontekstem katalogu aplikacji internetowych. Również (?! Faces) określa, czy adres URL nie zawiera "twarzy" na ścieżce URL.

+1

Dziękujemy! Dziękuję Ci! Dziękuję Ci! Używam Apache 2.4 z php5-fpm i ProxyPassMatch do fcgi. Jednak wykluczenie przekazania folderu okazało się coraz bardziej frustrujące. Po szukaniu czasu na rozwiązanie, w końcu udało się. Na wypadek, gdyby ktoś inny musiał zobaczyć, jak to działa (np. Dla instalacji Drupala, w której folder plików nie pozwala na wykonanie php): 'ProxyPassMatch^(/ sites/default/files/(. * \. Php (/) . *)?)) $! ' ' ProxyPassMatch ^/(. * \. Php (/.*)?)$ fcgi: //127.0.0.1: 8000/var/www' 'AddHandler php5-fcgi .php ' – casafred

+0

casafred cieszę się, że to zadziałało! – Reddymails