2012-01-02 19 views
9

Tôi đang cố gắng để loại trừ tất cả các file bắt đầu với "dgg-" và kết thúc bằng ".xml", ví dụ: dgg-file-1.xml từ việc sử dụng apache Ủy quyền.Apache ProxyPass - Exclude Files Regex

này hoạt động:

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

này không hoạt động:

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

Làm thế nào tôi có thể đạt được điều này?

ps- Tôi đang sử dụng mã này bên trong httpd.conf->virtualhostkhông.htaccess.

+0

Xác định "không hoạt động"? Những gì khác là trong tập tin? – fge

Trả lời

13

Sử dụng ProxyPassMatch. ProxyPass mong đợi các phần tử đường dẫn được viết hoàn toàn, nó không chấp nhận các regex.

Như ProxyPassMatch mất một regex, điều này có nghĩa là bạn cũng phải neo nó:

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

Đó chính xác là những gì tôi cần. Cảm ơn! –

2

tôi đã một tình huống mà tôi muốn vài hình ảnh được chọn từ Apache webserver và vài hình ảnh được đưa từ máy chủ ứng dụng (Trong trường hợp của tôi là Jboss). Vì vậy, tôi muốn có một regex phải loại trừ và bao gồm. Đây là những gì tôi thêm vào tập tin httpd.conf dưới thẻ VirtualHost.

Có một số tệp css và js nằm trong jsf jars và jenia popup jars mà chúng tôi sẽ không tìm thấy trên máy chủ web. Vì vậy, tiếp cận với máy chủ ứng dụng. Regexp đang tìm kiếm tất cả các tệp * .js và * .css nhưng loại trừ bất kỳ url nào có/jenia4faces và/khuôn mặt trong đó. Điều này đảm bảo rằng các tập lệnh như thế này /MYWEBAPP/jenia4faces/popup/popupFrame/js/popupFrame.js và /MYWEBAPP/faces/myFacesExtensionResource/tabbedpane.HtmlTabbedPaneRenderer/11302665/dynamicTabs.js vẫn được kéo từ máy chủ ứng dụng. Phần còn lại tất cả .js và .css sẽ được máy chủ web phân phối.

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

nơi/MYWEBAPP là ngữ cảnh gốc của ứng dụng web của tôi. Ngoài ra (?! Faces) là để biết liệu url có không có "khuôn mặt" trong đường dẫn url hay không.

+1

Cảm ơn bạn! Cảm ơn bạn! Cảm ơn bạn! Tôi đang sử dụng Apache 2.4 với php5-fpm và ProxyPassMatch cho fcgi. Tuy nhiên, việc loại bỏ một thư mục không được thông qua đã chứng minh ngày càng bực mình. Sau khi tìm kiếm một thời gian cho một giải pháp, điều này cuối cùng đã làm các trick. Chỉ trong trường hợp người khác cần xem cách nó hoạt động cùng nhau (ví dụ như đối với cài đặt Drupal trong đó thư mục tệp không cho phép thực thi php): 'ProxyPassMatch^(/ sites/default/files/(. * \. Php (/ .))?)) $! ' ' ProxyPassMatch ^/(. * \. Php (/.*)?)$ fcgi: //127.0.0.1: 8000/var/www' 'AddHandler php5-fcgi .php ' – casafred

+0

casafred vui vì nó đã làm việc cho bạn !! – Reddymails