1

我正在尝试编写一个RedirectMatch( apache) 来匹配除一个之外的一些关键字。

...
RewriteEngine  on
RedirectMatch   ^/(banners|documents|images|static)/(.*)$ http://sb.amazonaws.com/$1/$2
RewriteRule     ^(.*)/(vrf[0-9]+)/(.*).(js|css)$  $1/$3.$4 [PT]

我想出了这条RedirectMatch规则,它将所有包含横幅、文档等的 url 重定向到 aws 域。

现在,我想阻止包含temp转到 aws 域的 url。为此我添加了!temp

RedirectMatch   ^/(!temp|banners|documents|images|static)/(.*)$ http://sb.amazonaws.com/$1/$2

这不允许 urlmysite.com/temp/a.jpg去 AWS(但抱怨无限循环),但不会阻止mysite.com/images/temp/a.jpg被重定向。此规则的正确正则表达式应该是什么?

[编辑]

  • mysite.com/images/foo/a.jpg 应该去 AWS
  • mysite.com/images/foo/temp/a.jpg 不应该去 AWS
  • mysite.com/temp/a.jpg 不应该进入 AWS

[EDIT2] 这让我接近了我正在寻找的东西

RewriteEngine  on
RewriteRule ^(images/groups/temp)/(.*)$ $1/$2 [PT]
RewriteRule ^(banners|documents|images|static)/(.*)$ http://sb.amazonaws.com/$1/$2
RewriteRule ^(.*)/(vrf[0-9]+)/(.*).(js|css)$  $1/$3.$4 [PT]
4

1 回答 1

1

不要RedirectMatchRewriteRule. 使用 aRewriteCond添加例外:

RewriteEngine  on

RewriteCond %{REQUEST_URI} !^/images/groups/temp/ [NC]
RewriteRule ^(banners|documents|images|static)/(.*)$ http://sb.amazonaws.com/$1/$2 [L,NC,R]

RewriteRule ^(.*)/(vrf[0-9]+)/(.*).(js|css)$  $1/$3.$4 [PT]
于 2015-01-08T21:12:11.693 回答