本地PHP环境支持伪静态需启用Apache的mod_rewrite模块:取消httpd.conf中“LoadModule rewrite_module modules/mod_rewrite.so”的注释,并配置.htaccess重写规则。
本地 PHP 环境(如 XAMPP、WAMP、MAMP 或 Laragon)要支持伪静态,核心是启用并正确配置 Apache 的 mod_rewrite 模块,再配合项目根目录的 .htaccess 文件写好重写规则。Nginx 用户需修改 server 块配置,但本地常见环境多为 Apache,以下以 Apache 为主说明。
伪静态依赖 Apache 的重写引擎,必须确保已启用:
httpd.conf(XAMPP 路径通常为 xampp\apache\conf\httpd.conf)#LoadModule rewrite_module modules/mod_rewrite.so,去掉前面的 # 取消注释,找到你项目所在的目录段(如 ),确认其中包含:
AllowOverride All(不能是 None,否则 .htaccess 不生效)
将 .htaccess 放在网站根目录(如 htdocs/myproject/),内容示例如下(适配常见 PHP 框架或自定义路由):
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?path=$1 [QSA,L]
说明:
RewriteEngine On:开启重写功能RewriteCond 表示“如果请求的不是真实存在的文件或目录”,才执行重写RewriteRule 把所有请求转发给 index.php,并把原始路径作为 path 参数传入(Laravel、ThinkPHP 等框架常用此逻辑)QSA 保留原有查询参数,L 表示这是最后一条规则写个简单测试页验证:
index.php,内容:
http://localhost/myproject/test/123(注意没有 .php 后缀)array(1) { ["path"]=> string(7) "test/123" },说明伪静态已生效AllowOverride 是否为 All、.htaccess 文件名是否拼写正确(注意开头的点)伪静态不只是让 URL 好看,更是 SEO 基础:
/article/how-to-set-rewrite-rule),避免下划线和大写/category/post/title 比 /a/b/c/d/e/f 更友好).htaccess 中统一强制 www 或非 www、http → https(上线前补上,本地可暂不设),避免重复内容本地环境伪静态不复杂但容易忽略细节,关键是模块、权限、规则三者到位。调通后,上线到 Linux 主机基本无需改动;若用 Nginx,则需把 .htaccess 规则转成 location 块写法,逻辑一致,只是语法不同。