在XAMPP中,Apache默认并不会读取项目目录下的.htaccess文件,这是因为其配置中对应目录的AllowOverride被设置成了None。要让Apache支持.htaccess,我们需要修改Apache的虚拟主机或目录权限配置,将AllowOverride调整为All,然后重启Apache服务。

一、找到Apache的配置文件
打开XAMPP控制面板,点击Apache对应的Config按钮,选择httpd.conf,或者直接进入XAMPP安装目录下的apache/conf/httpd.conf文件。
二、修改Directory配置中的AllowOverride
在配置文件中搜索关键字AllowOverride,你会看到类似下面的目录权限块。XAMPP通常对htdocs目录做了如下设置:
<Directory "C:/xampp/htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride None
Require all granted
</Directory>
将上面的AllowOverride None修改为AllowOverride All,表示允许该目录下的.htaccess文件覆盖Apache配置。
<Directory "C:/xampp/htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
三、检查虚拟主机中的配置
如果你使用了虚拟主机,还需要确认apache/conf/extra/httpd-vhosts.conf里对应项目的Directory块也同样设置了AllowOverride All,否则仍然不会生效。
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/myproject"
ServerName myproject.local
<Directory "C:/xampp/htdocs/myproject">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
四、重启Apache并测试
保存配置文件后,回到XAMPP控制面板,先停止Apache再启动,使配置生效。之后在htdocs或项目目录中新建一个.htaccess文件,写入简单的重写规则做测试:
# 将请求重定向到index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^test$ index.php [L]
</IfModule>
访问对应的test路径,如果能正常跳转到index.php,说明Apache已经支持.htaccess并正确开启了AllowOverride。
五、常见问题
- 修改后不生效:确认修改的是正确的Directory块,且已重启Apache。
- 500错误:可能是.htaccess语法有误,或对应Apache模块(如mod_rewrite)未开启。
- Windows系统注意路径斜杠使用正斜杠或双反斜杠。
开启AllowOverride All会带来一定的性能开销,因为Apache每次请求都会读取.htaccess。生产环境可按需限制覆盖范围,但本地开发使用All最为方便。