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

Laravel路由返回错误:Apache下访问路由出现404“对象未找到”

解决Manjaro/Arch下Apache部署Laravel路由404的问题

兄弟,我之前在Arch系系统上部署Laravel也踩过这个路由404的坑,给你捋几个关键排查点,你一个个来:

  • 先确认mod_rewrite模块是否启用:Laravel的路由重写完全依赖这个Apache模块,Arch/Manjaro下启用命令很简单:

    sudo a2enmod rewrite
    

    启用后一定要重启Apache:

    sudo systemctl restart httpd.service
    
  • 把文档根目录改回Laravel的public文件夹:你之前改成项目根目录能访问首页,但这是错误的做法——Laravel的入口文件是public/index.php,所有请求都得经过这个文件才能被路由处理。所以Apache的站点配置里,DocumentRoot必须指向/path/to/your-laravel-project/public,而不是项目根目录。

  • 检查站点配置里的Directory权限设置:打开你的Apache站点配置文件(一般在/etc/httpd/conf.d/下的.conf文件,或者/etc/httpd/conf/extra/httpd-vhosts.conf),确保对应public目录的配置块是这样的:

    <Directory "/path/to/your-laravel-project/public">
        AllowOverride All
        Require all granted
        Options FollowSymLinks MultiViews
    </Directory>
    

    这里的AllowOverride All必须明确写在这个Directory块里,只改全局配置有时候会不生效。

  • 确认public目录下的.htaccess文件存在且内容正确:Laravel默认会在public目录生成这个文件,如果不小心删了,手动创建一个,内容如下:

    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews -Indexes
        </IfModule>
    
        RewriteEngine On
    
        # Handle Authorization Header
        RewriteCond %{HTTP:Authorization} .
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
        # Redirect Trailing Slashes If Not A Folder...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} (.+)/$
        RewriteRule ^ %1 [L,R=301]
    
        # Send Requests To Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </IfModule>
    
  • 修正Laravel目录的权限:Arch系的Apache运行用户是http,不是Debian系的www-data,所以要给这个用户赋予Laravel关键目录的写入权限:

    sudo chown -R $USER:http /path/to/your-laravel-project
    sudo chmod -R 755 /path/to/your-laravel-project/storage
    sudo chmod -R 755 /path/to/your-laravel-project/bootstrap/cache
    
  • 最后检查.env文件的APP_URL:确保APP_URL设置和你访问的地址一致,比如:

    APP_URL=http://127.0.0.1
    

做完这些步骤后,重启Apache,再试试访问你的路由,应该就能正常工作了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:30:45