-1

以下重写规则有问题。我认为我这样做是正确的,因为我从一本书中复制而不是它应该重定向到另一个域。

我得到以下网址:

http://www.domaina.com/some-Text-is-here-B40178.jpg

图片位于网址:

http://www.domainb.com/imgs/B40178.jpg

应该如何编写下面的重写规则才能使其工作?

RewriteRule ^.*-B([0-9]+)\../$ http://www.domainb.com/imgs/B$1 [L]

4

3 回答 3

2

您的规则缺少扩展名,因此不匹配。看起来你最后还有一个额外的 / 。如果它总是 jpg 你可以添加它。或者只是在最后匹配任何东西。

此外,您还需要捕获该扩展名。

匹配“jpg”

RewriteRule ^.*-B([0-9]+\.jpg)$ http://www.domainb.com/imgs/B$1 [R,L]

匹配任何东西

RewriteRule ^.*-B([0-9]+\..+)$ http://www.domainb.com/imgs/B$1 [R,L]

我的首选方法,匹配某些图像类型:

RewriteRule ^.*-B([0-9]+)\.(jpg|gif|png)$ http://www.domainb.com/imgs/B$1.$2 [R,L]

编辑错过了您正在重定向到另一个域。您还需要 R 标志。我已经添加了它。

于 2013-01-30T15:55:33.103 回答
1

您需要将规则标记为重定向,如下所示:

RewriteRule ^.*-B([0-9]+)\../$ http://www.domainb.com/imgs/B$1 [R,L]

编辑:您还需要附加文件扩展名。我会偷懒并假设它们都是JPG:

RewriteRule ^.*-B([0-9]+).jpg$ http://www.domainb.com/imgs/B$1.jpg [R,L]
于 2013-01-30T15:52:33.067 回答
0

最后我找到了一个不使用重定向的更好的解决方案:

 RewriteCond  %{REQUEST_URI}  !^$
 RewriteCond  %{REQUEST_URI}  !^/
 RewriteRule  .*              -    [R=400,L]
 RewriteRule ^.*-B([0-9]+)\.(jpg|jpeg|png|gif|JPG|GIF|PNG|JPEG)$ http://www.domain.com/imgs/B$1.$2 [P,L]`

因此,在 URL 中,图像看起来不会来自其他域。P 代表代理(http://httpd.apache.org/docs/2.4/rewrite/proxy.html

于 2013-02-03T15:26:22.963 回答