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

Docker容器内的Apache无法识别自定义路由,访问子路由返回404错误求助

Docker容器内的Apache无法识别自定义路由,访问子路由返回404错误求助

兄弟,我之前也碰到过完全一样的问题!你的根路由能正常访问说明Apache和Laravel的基础配置没问题,但子路由报Apache层面的404,核心原因就是Apache没启用URL重写模块,或者没有正确配置让Laravel的路由规则生效——毕竟Laravel是单入口应用,所有请求都得转发到public/index.php,Apache默认不会这么做,它会直接找neighbours这个物理文件,找不到就返回404了。

给你几个具体的解决步骤,亲测有效:

1. 确保Docker里的Apache开启了rewrite模块

如果用的是官方的httpd镜像,你需要在Dockerfile里添加开启模块的命令:

FROM httpd:2.4
# 启用rewrite模块
RUN a2enmod rewrite
# 复制你的Laravel项目到容器(假设本地项目在当前目录,复制到容器的/var/www/html)
COPY . /var/www/html
# 复制自定义的Apache配置文件(如果有的话)
COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf

2. 配置Apache允许.htaccess生效

Laravel的public目录下自带了.htaccess文件,用来处理路由重写,但Apache默认不允许目录下的.htaccess覆盖全局配置。你需要在Apache的配置文件(比如httpd.conf或者虚拟主机配置)里添加这段配置:

<Directory /var/www/html/public>
    # 允许.htaccess覆盖配置
    AllowOverride All
    Require all granted
</Directory>
# 还要确保DocumentRoot指向Laravel的public目录
DocumentRoot /var/www/html/public
ServerName zms.test

注意这里的路径要和你容器里Laravel项目的路径对应,别写错了!

3. 确认public目录下的.htaccess文件正确

如果你的项目里这个文件丢了或者内容不对,也会出问题,标准的Laravel .htaccess内容应该是这样的:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # 处理Authorization头
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # 移除尾部斜杠
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # 所有非文件/目录的请求转发到index.php
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

4. 重启容器

修改完Dockerfile和配置文件后,重新构建镜像并启动容器:

docker build -t my-laravel-apache .
docker run -d -p 80:80 --name laravel-app my-laravel-apache

做完这些步骤,再访问zms.test/neighbours应该就能正常进入Laravel的路由处理了,不会再报Apache的404啦!

备注:内容来源于stack exchange,提问作者Kostya Bronshteyn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 16:33:04