
本文旨在解决在 XAMPP 本地环境中无法通过 .htaccess 文件去除 URL 中的 .php 后缀的问题。重点在于确认 mod_rewrite 模块已正确启用,并提供详细的配置步骤和常见问题排查方法,确保本地开发环境与线上服务器行为一致,提升开发效率。
启用 mod_rewrite 模块
在 XAMPP 本地环境中,mod_rewrite 模块默认可能未启用,这是导致 URL 重写规则失效的常见原因。要启用该模块,请按照以下步骤操作:
打开 Apache 配置文件: 找到 XAMPP 安装目录下的 apache\conf\httpd.conf 文件,使用文本编辑器打开。
-
取消注释 mod_rewrite 模块: 在文件中搜索 mod_rewrite.so。通常,该行会被注释掉(以 # 开头)。移除行首的 # 符号,取消注释该行。例如:
立即学习“PHP免费学习笔记(深入)”;
LoadModule rewrite_module modules/mod_rewrite.so
保存文件: 保存对 httpd.conf 文件的修改。
重启 Apache 服务器: 通过 XAMPP 控制面板停止 Apache 服务器,然后重新启动。
配置 .htaccess 文件
确保 .htaccess 文件位于您的网站根目录下,并且包含正确的重写规则。以下是一个常用的 .htaccess 文件示例,用于去除 URL 中的 .php 后缀:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*[^/])/?$ $1.php [L]代码解释:
- RewriteEngine On: 启用 URL 重写引擎。
- RewriteCond %{REQUEST_FILENAME} !-d: 检查请求的文件名是否不是一个目录。
- RewriteCond %{REQUEST_FILENAME}\.php -f: 检查请求的文件名加上 .php 后缀是否是一个存在的文件。
- RewriteRule ^(.*[^/])/?$ $1.php [L]: 将所有不以 / 结尾的请求重写到对应的 .php 文件。 [L] 标志表示这是最后一条规则。
注意事项:
- 确保您的 .htaccess 文件没有拼写错误,并且位于正确的目录下。
- 某些文本编辑器可能会自动将 .htaccess 文件保存为 .txt 文件,请确保文件扩展名正确。
检查 AllowOverride 指令
AllowOverride 指令控制 Apache 服务器是否允许在 .htaccess 文件中使用重写规则。确保在 httpd.conf 文件中,您的网站目录或虚拟主机配置中,AllowOverride 指令设置为 All。
-
查找目录配置: 在 httpd.conf 文件中,找到与您的网站根目录相关的
块。例如: Options Indexes FollowSymLinks Includes ExecCGI AllowOverride None Require all granted -
修改 AllowOverride 指令: 将 AllowOverride None 修改为 AllowOverride All。
Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted 保存文件: 保存对 httpd.conf 文件的修改。
重启 Apache 服务器: 通过 XAMPP 控制面板停止 Apache 服务器,然后重新启动。
常见问题排查
- .htaccess 文件未生效: 检查 AllowOverride 指令是否正确配置。
- 404 错误: 检查 .htaccess 文件中的重写规则是否正确。确保文件路径和文件名匹配。
- 服务器内部错误 (500): 检查 .htaccess 文件中是否存在语法错误。使用 Apache 的错误日志进行调试。
总结
成功去除 XAMPP 本地主机 URL 中的 .php 后缀需要确保 mod_rewrite 模块已启用,.htaccess 文件配置正确,并且 AllowOverride 指令设置为 All。 按照以上步骤进行配置和排错,可以确保您的本地开发环境与线上服务器的行为一致,提高开发效率。如果在配置过程中遇到任何问题,请参考 Apache 的官方文档或在线社区寻求帮助。











