WAMPServer中.htaccess重写规则不生效如何配置解决?
WAMP环境.htaccess重定向失效修复方案
问题根源集中在Apache配置作用域错误、权限配置不生效两类,按以下步骤逐一排查修复:
修复httpd.conf目录配置错误
你当前修改的是系统根路径<Directory />的配置,存在两个问题:
- 该路径不是WAMP的实际站点目录,WAMP默认站点根目录是安装路径下的
www文件夹(如C:/wamp64/www、C:/wamp/www),对系统根目录的配置不会作用到你的站点文件 - 你给
<Directory />配置了Deny from all规则,会直接拦截所有请求,反而导致访问异常
操作步骤:
- 将
<Directory />块恢复为默认安全配置:
<Directory /> AllowOverride none Require all denied </Directory>
- 找到指向你实际www目录的Directory配置块(默认自带,路径替换为你本地的实际WAMP安装路径),修改如下:
<Directory "c:/wamp64/www"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
重点是把该块默认的AllowOverride None改为AllowOverride All,同时删除MultiViews选项,避免内容协商干扰重定向规则匹配。
检查虚拟主机配置覆盖
如果WAMP开启了虚拟主机功能,httpd-vhosts.conf里的配置优先级高于httpd.conf全局配置,这是配置修改后不生效的最常见原因。
操作步骤:
- 打开WAMP面板,在Apache配置列表中找到
httpd-vhosts.conf(路径一般为Apache版本目录/conf/extra/httpd-vhosts.conf) - 找到你当前站点对应的
VirtualHost块,确认块内的目录配置同样开启了Override权限,参考配置:
<VirtualHost *:80> ServerName your-local-domain.test DocumentRoot "c:/wamp64/www/SiteTemplate" <Directory "c:/wamp64/www/SiteTemplate"> Options +FollowSymLinks -MultiViews AllowOverride All Require all granted </Directory> </VirtualHost>
如果你的.htaccess直接存放在SiteTemplate目录下,需要把.htaccess里的重写规则前缀去掉,改为:
RewriteEngine On RewriteRule ^home$ index.php [L] RewriteRule ^users$ users.php [L] RewriteRule ^addUser$ registration.php [L]
规则里写带/SiteTemplate/的绝对路径,只有当.htaccess存放在www根目录时才有效。
基础项校验
- 确认文件名正确:Windows默认隐藏已知文件扩展名,检查文件是否被误存为
.htaccess.txt,正确文件名无主文件名,仅后缀为.htaccess - 每次修改Apache配置、.htaccess文件后,必须通过WAMP面板重启Apache服务,仅刷新浏览器不会加载新配置
- 验证rewrite模块加载状态:在站点根目录新建
phpinfo.php,写入<?php phpinfo();,访问后搜索mod_rewrite,确认模块出现在已加载模块列表中 - 如果以上配置都完成仍不生效,可以开启重写日志排查匹配问题:Apache2.2版本在配置中加入
RewriteLog "c:/wamp64/logs/rewrite.log"、RewriteLogLevel 3;Apache2.4版本加入LogLevel alert rewrite:trace3,重启后访问测试路径,查看日志中的规则匹配记录定位问题。
内容的提问来源于stack exchange,提问作者Wahid AMINI
相关产品推荐
相关产品推荐

