You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache RewriteRule访问密码保护网络路径的404问题求助

解决Apache Rewrite跳转至认证文件夹的404问题

方案一:代理模式传递全局认证凭据

当目标目录需要HTTP Basic认证时,单纯的RewriteRule跳转不会自动携带凭据,需将请求转为代理模式并配置全局凭据:

  1. 确保Apache已启用mod_rewrite、mod_proxy、mod_proxy_http模块
  2. 修改Rewrite规则,添加[P]标志标记为代理请求:
RewriteEngine on
RewriteRule ^/video/(.*) http://10.42.1.51/qnap/SessionVideos/$1 [P,T=video/webm]
  1. 在Apache全局或虚拟主机配置中添加代理认证:
<Proxy http://10.42.1.51/qnap/SessionVideos/*>
    # 替换user:pass为实际凭据,先通过base64编码(echo -n 'user:pass' | base64)
    ProxySet headers="Authorization: Basic dXNlcjpwYXNz"
</Proxy>

方案二:前端认证反向传递凭据

如果希望让访问/video的用户自行输入凭据,可将前端认证信息直接传递给后端:

  1. 配置前端路径的Basic认证:
<Location /video>
    AuthType Basic
    AuthName "Video Access"
    AuthUserFile /path/to/your/.htpasswd
    Require valid-user
</Location>
  1. 修改Rewrite规则并开启凭据传递:
RewriteEngine on
RewriteRule ^/video/(.*) http://10.42.1.51/qnap/SessionVideos/$1 [P,T=video/webm]
ProxyPassReverse /video http://10.42.1.51/qnap/SessionVideos/
ProxyRequests Off
# 将用户输入的凭据传递给后端服务器
RequestHeader set Authorization %{HTTP:Authorization}s

方案三:URL嵌入凭据(仅测试用,禁止生产环境)

虽然可以直接在目标URL中写入user:pass@,但凭据会暴露在日志、缓存中,风险极高,仅用于临时测试:

RewriteEngine on
RewriteRule ^/video/(.*) http://user:pass@10.42.1.51/qnap/SessionVideos/$1 [T=video/webm]

内容的提问来源于stack exchange,提问作者Erwin Kloibhofer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 12:15:56