Apache ProxyPass - 正则表达式排除文件

时间:2012-01-02 13:41:28

标签: regex apache mod-rewrite load-balancing proxypass

我正在尝试排除以“dgg - ”开头并以“结尾的所有文件。”xml“,例如: dgg-file-1。 xml 来自使用apache代理。

这有效:

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

这不起作用:

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

我如何实现这一目标?

ps-我在httpd.conf->virtualhost 而不是 .htaccess中使用此代码。

2 个答案:

答案 0 :(得分:16)

使用ProxyPassMatchProxyPass期望完全写入路径元素,它不接受正则表达式。

由于ProxyPassMatch采用正则表达式,这意味着您还必须锚定它:

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

答案 1 :(得分:3)

我遇到的情况是,我希望从Apache网络服务器中挑选几张图片,并且几乎没有图像从应用程序服务器中包含(在我的案例中是Jboss)。 所以我想要一个必须排除和包含的正则表达式。以下是我在VirtualHost标记下添加到httpd.conf文件的内容。

有一些css和js文件在jsf jars和jenia popup jar中我们 在网络服务器上找不到。所以请联系app server。正则表达式正在查找所有* .js和* .css网址,但不包括任何包含/ jenia4faces和/ faces的网址。这是为了确保仍然从应用服务器中提取这样的脚本/MYWEBAPP/jenia4faces/popup/popupFrame/js/popupFrame.js和/MYWEBAPP/faces/myFacesExtensionResource/tabbedpane.HtmlTabbedPaneRenderer/11302665/dynamicTabs.js。休息所有.js和.css将由网络服务器提供。

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

其中/ MYWEBAPP是我的网络应用根目录。 另外(?!faces)是告诉url路径中的url是否没有“faces”。

相关问题