CentOS 7系统下Apache无法渲染DocC文档问题求助
问题原因
1. 重写规则语法错误
你当前.htaccess中第二条静态资源重写规则的正则表达式存在遗漏:
原规则为:
RewriteRule ^(css|js|data|images|downloads|favicon\.ico|favicon\.svg|img|theme-settings\.json|videos)\/.$ SlothCreator.doccarchive/$0 [L]
其中\/.$仅能匹配路径后缀仅1个字符的请求,无法匹配/data/documentation/SlothCreator.json这类多级路径请求,会导致请求进入最后一条兜底重写规则,触发无限重定向循环,Apache会直接返回500错误。
2. Apache配置权限未开启
直接访问.doccarchive路径返回404的常见原因有两个:
- CentOS默认Apache站点配置中,
/var/www/html目录的AllowOverride参数为None,会导致.htaccess规则完全不生效 - 系统默认开启的SELinux安全策略,阻止Apache读取
.doccarchive目录下的文件
修复步骤
- 修正
.htaccess重写规则,将第二条规则的正则匹配改为支持多级路径的版本:
# 修正后的静态资源路由规则 RewriteRule ^(css|js|data|images|downloads|favicon\.ico|favicon\.svg|img|theme-settings\.json|videos)\/.*$ SlothCreator.doccarchive/$0 [L]
- 开启
.htaccess支持:
编辑Apache主配置文件/etc/httpd/conf/httpd.conf,找到<Directory "/var/www/html">配置块,将AllowOverride None修改为AllowOverride All,保存后执行systemctl restart httpd重启服务。 - 修复文件权限与SELinux配置:
# 赋予目录可读权限 chmod -R 755 /var/www/html/SlothCreator.doccarchive # 修改目录所属用户为Apache运行用户 chown -R apache:apache /var/www/html/SlothCreator.doccarchive # 临时关闭SELinux验证是否是权限问题 setenforce 0
如果临时关闭SELinux后访问正常,执行以下命令添加SELinux规则,再重新开启SELinux即可:
semanage fcontext -a -t httpd_sys_content_t "/var/www/html/SlothCreator.doccarchive(/.*)?" restorecon -Rv /var/www/html/SlothCreator.doccarchive setenforce 1
内容的提问来源于stack exchange,提问作者wonconn
相关产品推荐
相关产品推荐

