【问题标题】:Apache2 VirtualHost - proper silent redirect?Apache2 VirtualHost - 正确的静默重定向?
【发布时间】:2015-07-07 01:06:27
【问题描述】:

希望这里有一个快速简单的帖子。

例如,假设我有 url“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 保留为上例中列出的直接图像的热链接。

有人可以解释一下我缺少哪些标志或规则,以便正确完成我正在尝试的事情吗?

谢谢,

【问题讨论】:

    标签: apache redirect virtualhost


    【解决方案1】:

    使用 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
    

    【讨论】:

    • 使用您的简化修改虚拟主机会导致文件指向404页面?不过,我感谢您的帮助。
    • 检查您的 DocumentRoot 并确保 get.php 在那里。一个很好的测试是直接请求i.pitter.us/get.php?file=gwqNnGSAPuDqS.png 并查看图像是否已交付。
    • 我可以确认,get.php 显示图像成功,但是重定向规则:RewriteRule \.(png|gif|jpe?g|exe|txt|zip|rar)$ https://i.pitter.us/get.php?file=$1 使用没有 get.php 的 URL 返回 404。
    • 通常 HTTPS 位于端口 443 - 是否有用于 HTTPS 的 VirtualHost?
    • CloudFlare 正在对其服务器执行 SSL,并向服务器执行 HTTP。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2017-02-17
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多