举个例子,假设我有网址" https://i.pitter.us/gwqNnGSAPuDqS.png",但是当浏览器加载时,它会被发送到确定从哪个服务器获取图像的实际PHP脚本: " https://i.pitter.us/get.php?file=gwqNnGSAPuDqS.png。
在我的Apache2 VirtualHost配置中,我有这个:
<VirtualHost *:80>
ServerAlias i.pitter.us
DocumentRoot /var/www/html/i
Options -Indexes
<Directory "/">
<Files ~ "\.py*$">
Order allow,deny
Deny from all
</Files>
</Directory>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^i.pitter.us$
RewriteRule ^/(.*\.(png|gif|jpeg|jpg|exe|txt|zip|rar))$ https://i.pitter.us/get.php?file=$1
ErrorDocument 404 /404.php
</VirtualHost>
在进一步解释我想要尝试做什么之前,我已经在StackOverflow上进行了大量搜索并尝试了不同的方法,但仍然在结束时我自己无法正确配置。我需要保留URL,就像它是直接图像的热链接一样,如上例所示。
为了正确完成我正在尝试的内容,有人可以提供我缺少的标志或规则的解释吗?
谢谢,
答案 0 :(得分:0)
使用ServerName代替ServerAlias,除非.conf适用于其他域/子域。
您不需要RewriteCond。
你可以简化这个:
^/(.*\.(png|gif|jpeg|jpg|exe|txt|zip|rar))$
为:
\.(png|gif|jpe?g|exe|txt|zip|rar)$
另外,启用RewriteLog可以帮助您了解Apache正在做什么。
RewriteLog /path/to/log
RewriteLogLevel Debug