Dis*_*oat 6 mod-rewrite rewritecond apache-2.2
我有一些这样的 Apache 配置:
# Image hotlinking rule
RewriteCond %{HTTP_REFERER} ^http://badsite\.com/
RewriteRule .*/static/artwork/.*\.(jpg|png)$ /static/images/hotlink.png [L]
# Redirects
RewriteRule ^static/artwork/(.+)$ http://cdn.mysite.com/artwork/$1 [L,R=301]
# CodeIgniter
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)
它应该执行以下操作:
badsite.com,则阻止它并显示热链接图像。但是,我认为第一个RewriteCond适用于重定向规则,而不是盗链规则,因为来自该引用者的图像请求被重定向到 CDN,而不是盗链图像。Apache 文档中的一个示例(本节底部)暗示换行符停止RewriteCond应用,但这并没有发生。
有没有办法“重置”RewriteCond规则,或者我的配置中是否有其他错误?
换行完全无关紧要;aRewriteCond只适用于一个RewriteRule;直接在它下面的那个。
提供有关您的配置的更多信息会很有帮助,因为上下文在 Apache 中是相关的。但是,从您的第二个RewriteRule工作的事实来看,此配置似乎是在<Directory>上下文或.htaccess文件中设置的,并且/static位于该上下文的根目录中。
鉴于此,您首先RewriteRule将永远不会匹配。改变你的模式..
.*/static/artwork/.*\.(jpg|png)$
Run Code Online (Sandbox Code Playgroud)
..到..
^static/artwork/.*\.(jpg|png)$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4809 次 |
| 最近记录: |