Apache 2.2.15配置仅允许指定域名访问时出现403禁止错误求助
问题分析与修复方案
嘿,我看了你的Apache 2.2配置,发现几个关键问题导致你无法通过自身域名访问视频文件:
1. ServerName配置不正确
你当前的ServerName Server-VM没有指向你的实际域名domain.cc,这会导致Apache无法正确将请求匹配到这个虚拟主机——可能你的请求实际上被默认虚拟主机处理了,而默认主机没有对应的允许规则,所以返回Forbidden。
2. Referer匹配规则不够严谨
你的SetEnvIf Referer domain\.cc internal只模糊匹配包含domain.cc的Referer,但存在两个问题:
- 如果你的网站使用HTTPS,或者Referer带
www前缀(比如www.domain.cc),可能无法正确匹配; - 当你直接在地址栏输入视频URL时,HTTP Referer头是空的,这时候不会触发
internal环境变量,请求会被拒绝(如果你希望禁止直接访问视频URL,这是正常的,但如果是从你自己网站的页面点击视频也被拒绝,那大概率是规则没匹配到正确的Referer)。
修正后的完整配置
<VirtualHost *:80> ServerName domain.cc ServerAlias www.domain.cc # 覆盖带www的域名访问 DocumentRoot /var/www/ # 匹配HTTP/HTTPS协议、带/不带www的domain.cc域名下的所有Referer SetEnvIf Referer "^https?://(www\.)?domain\.cc/" internal <FilesMatch "\.(avi|mp4)$"> Order Deny,Allow Deny from all Allow from env=internal </FilesMatch> </VirtualHost>
额外建议
- 重启Apache服务使配置生效:
service httpd restart - 测试时确保从你的网站页面点击视频链接(而不是直接输入视频URL),这时候浏览器会发送包含
domain.cc的Referer头,应该能正常访问; - 如果还是有问题,查看Apache错误日志
/var/log/httpd/error_log,里面会记录具体的请求被拒绝的原因,比如Referer的具体值是否匹配了规则。
内容的提问来源于stack exchange,提问作者Strepk
相关产品推荐
相关产品推荐

