2012-01-02 27 views
9

Estoy tratando de excluir todos los archivos a partir de "dgg-" y terminando en ".xml", ejemplo: DGG-file-1.xml de utilizar el Apache apoderado.Apache ProxyPass - Excluir archivos Regex

Esto funciona:

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

esto no funciona:

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

¿Cómo puedo lograr esto?

ps estoy usando el código dentro de la httpd.conf->virtualhostno.htaccess.

+0

¿Definir "no funciona"? ¿Qué más hay en el archivo? – fge

Respuesta

13

Use ProxyPassMatch. ProxyPass espera elementos de ruta completamente escritos, no acepta expresiones regulares.

Como ProxyPassMatch toma una expresión regular, esto significa que también debe anclarlo:

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

Eso es exactamente lo que necesitaba. ¡Gracias! –

2

que había una situación en la que quería pocas imágenes para ser recogidos desde el servidor web Apache y pocas imágenes que se incluirán desde el servidor de aplicaciones (En mi caso Jboss). Así que quería una expresión regular que tuviera que excluir e incluir. Esto es lo que agregué al archivo httpd.conf bajo la etiqueta VirtualHost.

Hay algunos archivos css y js que están en jsf jar y jenia popup jar que no encontraremos en el servidor web. Acceda al servidor de la aplicación. La expresión regular busca todas las URL * .js y * .css, pero excluye las URL que tienen/jenia4faces y/faces en ella. Esto es para asegurarse de que los scripts como este /MYWEBAPP/jenia4faces/popup/popupFrame/js/popupFrame.js y /MYWEBAPP/faces/myFacesExtensionResource/tabbedpane.HtmlTabbedPaneRenderer/11302665/dynamicTabs.js sigan siendo extraídos del servidor de la aplicación. Rest all .js y .css serán atendidos por un servidor web.

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

donde/MYWEBAPP es mi contexto de raíz de aplicaciones web. También (?! Faces) es decir si la URL no tiene "caras" en la ruta de la url.

+1

¡Gracias! ¡Gracias! ¡Gracias! Estoy usando Apache 2.4 con php5-fpm y un ProxyPassMatch para fcgi. Sin embargo, excluir una carpeta de ser aprobada resultó ser cada vez más frustrante. Después de buscar algo de tiempo para encontrar una solución, esto finalmente funcionó. En caso de que alguien más necesite ver cómo funciona conjuntamente (por ejemplo, para una instalación de Drupal donde la carpeta de archivos no debe permitir la ejecución de php): 'ProxyPassMatch^(/ sites/default/files/(. * \. Php (/ . *)?)) $! ' ' ProxyPassMatch ^/(. * \. Php (/.*)?)$ fcgi: //127.0.0.1: 8000/var/www' 'AddHandler php5-fcgi .php ' – casafred

+0

casafred contenta de que funcionó para ti !! – Reddymails

Cuestiones relacionadas