XAMPP配置Laravel环境:解决Rewrite重写规则与public目录指向问题

煙雲

煙雲

2026-06-18

793人浏览

原创

apache未启用mod_rewrite模块或未允许.htaccess解析导致laravel路由404,需启用rewrite模块、设置allowoverride all、确保documentroot指向public目录、正确配置rewritebase及验证.htaccess文件有效性。

xampp配置laravel环境:解决rewrite重写规则与public目录指向问题

Apache没启用mod_rewrite,所有Laravel路由都404

不是代码写错了,是Apache压根没读你的.htaccess。默认XAMPP关掉了重写模块,RewriteEngine On这行再正确也没用——引擎根本没启动。

打开C:\xampp\apache\conf\httpd.conf,确认这两处:

  • LoadModule rewrite_module modules/mod_rewrite.so 这行前面不能有#
  • 找到类似 <directory></directory> 的块,在里面把 AllowOverride None 改成 AllowOverride All

改完必须点XAMPP控制面板里的“Restart Apache”,否则配置不生效。验证方式:在htdocs下放个.htaccess,内容只写RewriteEngine On,访问任意页面如果报500,说明模块已加载;如果毫无反应,AllowOverride还是None

DocumentRoot指向错位置,.env文件可能被直接下载

Laravel项目根目录(含app/config/.env)绝不能当Web根目录。Apache若把DocumentRoot设成项目根,用户访问http://localhost/.env就能直接下载配置文件——这不是假设,是真实发生过的安全事件。

正确做法只有两种:

  • 用虚拟主机:在C:\xampp\apache\conf\extra\httpd-vhosts.conf里写DocumentRoot "C:/xampp/htdocs/myapp/public",并配<directory></directory>块启用AllowOverride All
  • 硬改全局配置:修改httpd.conf里的DocumentRoot和对应<directory></directory>路径,都指向public子目录(注意路径末尾不加斜杠)

无论哪种,DocumentRoot的值必须精确到public目录,且<directory></directory>路径要和它完全一致,否则Require all granted可能不生效。

子目录部署时RewriteBase没填对,CSS/JS全404

把Laravel放在htdocs/blog/这种子路径下,asset('css/app.css')生成的URL是/css/app.css,但实际资源在/blog/css/app.css——浏览器自然404。问题不在Laravel,而在.htaccess没告诉Apache“基准路径是/blog/”。

Laravel 13.2.0
Laravel 13.2.0

PHP中文网提供Laravel 13.2.0版本下载,Laravel框架 是基于 PHP 8.3+ 的高性能框架,官方推荐通过 Composer 安装。它内置 AI SDK、JSON:API Resources 及原生向量搜索,支持属性驱动开发与队列路由,大幅提升开发效率。相比旧版,13.2.0 优化了缓存 TTL 管理与实时通信,无需 Redis 即可横向扩展。作为现代 Web 开发首选,它兼顾安全与极速体验,助您快速构建企业级应用。

下载

打开public/.htaccess,确认第一行是RewriteEngine On,第二行必须是:

RewriteBase /blog/

注意:/blog/末尾的斜杠不能少,也不能多写成//blog/;大小写要和你在浏览器里访问的路径完全一致(比如/Blog/就无效);如果项目在根目录,这行直接删掉或注释掉。

别试图用APP_URL来“修复”这个路径——它只影响生成的绝对URL,不影响Apache重写行为。

public目录下.htaccess被删或编码错误,重写静默失效

Laravel 10+ 自带的public/.htaccess文件,内容极简但关键。有人手动删了它,或用记事本另存为UTF-8带BOM格式,导致Apache解析失败,RewriteRule整段被跳过。

标准内容应为:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]
RewriteRule ^(.*)$ index.php [QSA,L]

检查要点:

  • 文件名必须是纯.htaccess,不能叫htaccess.txt.htaccess.bak
  • 用VS Code或Notepad++打开,确认编码是UTF-8无BOM(Notepad++:编码 → 转为UTF-8无BOM格式)
  • Windows资源管理器默认隐藏扩展名,右键属性看“名称”字段是否真为.htaccess

最麻烦的是,这类错误通常不报错,只是重写规则不生效——你得靠排除法:先确认mod_rewriteAllowOverride都OK,再查这个文件本身。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

5505

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

3610

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

1786

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

2293

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

2811

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

2020

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

3073

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

2337

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

10931

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程