apache实现伪静态核心是启用mod_rewrite模块、允许.htaccess覆盖配置、编写rewrite规则;需修改httpd.conf开启模块和allowoverride all,再在根目录创建含rewriteengine on及rewriterule的.htaccess文件。

Apache 实现 URL 重写(伪静态)核心是启用 mod_rewrite 模块,并通过规则将看似静态的 URL 映射到真实的动态脚本。整个过程分三步:开启模块、允许重写、编写规则。
确保 mod_rewrite 模块已启用
Apache 默认可能未加载该模块。需编辑 httpd.conf(Linux 通常在 /etc/apache2/mods-enabled/rewrite.load 或 /usr/local/apache/conf/httpd.conf),确认以下行未被注释:
LoadModule rewrite_module modules/mod_rewrite.so
若被 # 注释,删掉 #;若不存在,手动添加该行。保存后重启 Apache:
sudo systemctl restart apache2 # Debian/Ubuntu # 或 sudo apachectl restart # macOS / 源码安装
允许 .htaccess 文件生效
虚拟主机或目录级配置需显式授权 .htaccess 覆盖默认设置。找到对应 <directory></directory> 块(常见路径如 /var/www/html),将:
AllowOverride None
改为:
AllowOverride All
同时确认 Options FollowSymLinks 已启用(安全前提下)。修改后同样需重启 Apache。
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
在网站根目录创建并编写 .htaccess 文件
文件必须命名为 .htaccess(开头带点,无扩展名),放在项目根目录(如 /var/www/html/)。内容示例:
RewriteEngine On RewriteBase / RewriteRule ^article/([0-9]+)/?$ article.php?id=$1 [L,QSA] RewriteRule ^product/([a-z\-]+)/([0-9]+)\.html$ product.php?cat=$1&id=$2 [L]
说明:
-
RewriteEngine On是开关,必须首行启用 -
RewriteBase /指定重写基准路径(子目录部署时需调整,如/blog/) -
^article/([0-9]+)/?$匹配/article/123/或/article/123 -
$1对应括号内捕获的数字,传给article.php?id= -
[L]表示匹配即终止后续规则;[QSA]保留原始查询参数(如/article/123?ref=abc中的ref=abc)
验证与调试小技巧
- 访问一个伪静态 URL(如
https://yoursite/article/456),观察是否正确加载article.php?id=456 - 若 500 错误,检查
.htaccess语法(空格、符号错误常见) - 若 404,确认
AllowOverride All生效位置是否覆盖当前目录,且.htaccess文件权限为可读 - 开启 Apache 的 rewrite 日志(仅开发环境):在
httpd.conf加入LogLevel alert rewrite:trace3
查看错误日志定位匹配失败原因
不复杂但容易忽略










