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

Apache从Alias迁移至VirtualHost后路由404与隐藏index.php问题

问题核心原因

路由404的根因是VirtualHost目录配置错误,和框架本身、域名解析无关:

  • 你将<Directory>块中的AllowOverride All注释,Apache不会读取/var/www/BaseCollDev/public目录下自带的Symfony框架重写规则,所有非真实存在的文件、目录请求不会被转发到index.php入口文件
  • 配置中写了-FollowSymlinks禁用了符号链接跟随权限,而mod_rewrite模块正常运行必须依赖该权限,重写规则完全无法执行
  • 上层/var/www目录设置了AllowOverride None,根目录下的WordPress重写规则不会生效,也不会接管当前应用的路由转发
  • 首页能正常访问是因为请求根路径/时Apache会自动查找DirectoryIndex指定的index.php文件,不需要重写规则介入,其他二级路径没有对应实体文件又没触发转发,就直接返回404。
修复操作步骤
  1. 修改VirtualHost配置文件/etc/apache2/vhost.d/basecolldev-ssl.conf中的目录块,修正后的配置如下:
<Directory /var/www/BaseCollDev/public>
     Require all granted
     Options -Indexes -Includes -ExecCGI +FollowSymlinks
     AllowOverride All
     DirectoryIndex index.php
</Directory>

配置说明:

  • 取消AllowOverride All的注释,允许Apache读取当前目录下的.htaccess重写规则
  • 将-FollowSymlinks改为+FollowSymlinks,给mod_rewrite提供必要运行权限
  • 显式指定目录默认首页为index.php,避免默认首页优先级异常
  1. 确认Apache重写模块已启用,OpenSUSE系统执行以下命令:
a2enmod rewrite

如果返回模块已启用的提示无需额外操作。

  1. 校验配置文件语法正确性,执行:
apache2ctl configtest

返回Syntax OK后重载Apache服务让配置生效:

systemctl reload apache2
其他日志404说明

你日志中两类404不属于路由配置问题,按需处理即可:

  • /_wdt/xxx路径是Symfony开发环境的调试工具条请求,生产环境关闭应用debug模式后就不会再发起这类请求
  • /favicon.ico是网站图标请求,只要在public目录下放置对应命名的图标文件即可消除该报错,不影响业务功能。
验证

配置重载完成后直接访问https://basecolldev.mydomain.fr/login即可正常打开登录页,所有业务路径都不需要手动携带/index.php后缀,框架路由会自动正常转发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:39:29