10

我试图排除所有以"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 not .htaccess中使用此代码。

4

2 回答 2

17

使用ProxyPassMatch. ProxyPass需要完全编写的路径元素,它不接受正则表达式。

作为ProxyPassMatch一个正则表达式,这意味着您还必须锚定它:

ProxyPassMatch ^/dgg-[^.]+\.xml$ !
于 2012-01-02T13:50:09.470 回答
3

我有一种情况,我希望从 Apache 网络服务器中挑选一些图像,并从应用程序服务器(在我的情况下为 Jboss)中包含一些图像。所以我想要一个既要排除又要包含的正则表达式。这是我在 VirtualHost 标签下添加到 httpd.conf 文件的内容。

jsf jars 和 jenia popup jars 中有一些 css 和 js 文件,我们在网络服务器上找不到。因此,请联系应用服务器。正则表达式正在查找所有 *.js 和 *.css url,但排除其中包含 /jenia4faces 和 /faces 的任何 url。这是为了确保像 /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”。

于 2013-11-04T17:24:36.253 回答