Apache报AH01276: Cannot serve directory错误 站点迁移后无法正常访问
报错核心原因
访问路径/anasayfa/时,Apache没有匹配到对应的处理规则,尝试读取该路径对应实体目录下的默认首页文件失败,且由于Options -Indexes禁用了目录列表功能,因此抛出该错误。
排查解决步骤
- 修正rewrite规则匹配逻辑
你当前.htaccess中配置的规则为RewriteRule ^anasayfa$ index.php [L],仅能匹配不带尾斜杠的/anasayfa路径,无法匹配带尾斜杠的/anasayfa/路径。将规则修改为RewriteRule ^anasayfa/?$ index.php [L],/?表示尾斜杠可选,即可同时匹配两种格式的请求。 - 检查是否存在
anasayfa实体目录
进入站点根目录/home/gorevyap/public_html/,确认是否存在名为anasayfa的实体目录。如果存在该目录(多为空目录),Apache的mod_dir模块会默认将不带尾斜杠的/anasayfa请求301重定向到带尾斜杠的/anasayfa/,直接触发目录读取逻辑。如果该目录无实际用途可直接删除,否则按照上一步修改rewrite规则即可。 - 验证mod_rewrite模块是否启用
新服务器默认可能未开启mod_rewrite模块,你可以在Apache全局配置中检查LoadModule rewrite_module modules/mod_rewrite.so配置项是否未被注释,使用cPanel面板的话可直接在Apache模块管理页开启rewrite模块。 - 检查AllowOverride配置
确认站点对应的Apache虚拟主机配置中AllowOverride参数设置为All,如果该参数为None,.htaccess文件会完全不生效,所有rewrite规则都不会执行。 - 修正DirectoryIndex配置
你提供的Apache配置中写的是DirectoryIndex Priority index.html index.php,其中Priority是无效参数,会导致整条DirectoryIndex配置失效。删除无效参数,修正为DirectoryIndex index.html index.php后重载Apache配置即可。 - 缓存清理
所有配置修改完成后,先清空浏览器缓存(301重定向会被浏览器长期缓存),再访问站点测试是否恢复正常。
内容的提问来源于stack exchange,提问作者avztemeleq
相关产品推荐
相关产品推荐

