Apache服务器配置问题:禁止目录访问但保留指定重定向
解决思路
调整配置加载顺序
确保子目录<Directory "${INSTALL_DIR}/www/ssl/config">的配置代码放在父目录<Directory "${INSTALL_DIR}/www/ssl">之后,Apache按配置文件的书写顺序加载规则,后定义的子目录规则才能覆盖父目录的限制。替换旧版授权指令(适配Apache 2.4+)
旧的order deny,allow是Apache 2.2的语法,2.4版本已改用Require指令,兼容性问题可能导致配置失效,替换为:
父目录配置:<Directory "${INSTALL_DIR}/www/ssl"> Require all denied </Directory>子目录配置:
<Directory "${INSTALL_DIR}/www/ssl/config"> Require all granted FallbackResource /ssl/config.json </Directory>修正FallbackResource的路径格式
FallbackResource需要传入URL路径而非本地文件系统的绝对路径,所以应写成FallbackResource /ssl/config.json,否则Apache无法正确解析跳转目标。改用
指令精准控制URL规则
如果/ssl/config并非实际存在的文件系统目录,或者想直接针对URL路径做处理,<Location>比<Directory>更适配场景,示例:<Directory "${INSTALL_DIR}/www/ssl"> Require all denied </Directory> <Location "/ssl/config"> Require all granted FallbackResource /ssl/config.json </Location>若需要直接跳转而非 fallback,可改用
Redirect指令:<Location "/ssl/config"> Require all granted Redirect permanent /ssl/config /ssl/config.json </Location>验证配置并重启服务
修改后执行apachectl configtest(或httpd -t)检查语法错误,确认无误后重启Apache服务使配置生效。
内容的提问来源于stack exchange,提问作者yo3hcv
相关产品推荐
相关产品推荐

