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

XAMPP移动Laravel项目文件夹后表单提交报404 artisan serve运行正常

问题原因

你遇到的是典型的Apache环境下Laravel重写规则未生效问题,artisan serve是PHP内置服务器,默认会将所有请求转发到入口文件public/index.php,所以运行正常;而Apache需要额外配置才能支持pathinfo格式的路由。

解决步骤

  • 第一步:验证重写规则是否是核心问题
    直接访问地址 http://localhost/Webeng/example/index.php/uploads 提交表单,如果可以正常运行,直接按后续步骤配置即可。
  • 第二步:开启Apache的mod_rewrite模块
    找到Apache配置文件httpd.conf,搜索mod_rewrite.so,去掉行首的#注释,重启Apache生效。
  • 第三步:检查.htaccess文件
    确认项目public目录下存在.htaccess文件,复制迁移时隐藏文件容易被忽略,Laravel默认的.htaccess内容如下:
<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>
  • 第四步:修改Apache目录权限配置
    找到Apache配置中对应htdocs目录的配置段,将AllowOverride参数的值改为All,否则.htaccess规则不会生效,配置示例:
<Directory "path/to/your/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
  • 第五步:修正站点根目录配置(可选但推荐)
    Laravel的公开访问目录应为public文件夹,建议将站点根目录直接指向htdocs/Webeng/example/public,避免暴露项目敏感文件,同时访问路径也可以简化为http://localhost/uploads。
  • 补充配置:修改项目根目录下.env文件的APP_URL参数为当前项目的访问地址,避免路由生成地址错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 11:06:03