URL重写通过.htaccess和mod_rewrite将动态URL转为静态形式,如example.com/user/123;需启用mod_rewrite模块,配置AllowOverride All,使用RewriteRule实现规则匹配与内部转发,PHP中仍通过$_GET获取参数,常见应用包括隐藏.php、多参数路由和伪静态首页,提升SEO与用户体验。

URL重写在PHP开发中非常常见,主要用于将动态URL转换为更友好、更利于SEO的静态形式。比如把example.com/user.php?id=123变成example.com/user/123。这主要通过.htaccess文件配合Apache的mod_rewrite模块实现。
开启mod_rewrite模块
URL重写依赖Apache的mod_rewrite模块。确保它已启用:
- 在Linux系统中,可通过命令
a2enmod rewrite启用 - 在
httpd.conf或虚拟主机配置中确认AllowOverride All,允许.htaccess覆盖规则 - 重启Apache服务使配置生效
.htaccess基础语法与重写规则
在网站根目录创建.htaccess文件,写入以下内容实现基本重写:
RewriteEngine On
RewriteRule ^user/([0-9]+)/?$ user.php?id=$1 [L]
说明:
立即学习“PHP免费学习笔记(深入)”;
- RewriteEngine On:开启重写引擎
- RewriteRule:定义重写规则
- ^user/([0-9]+)/?$:匹配以user/数字结尾的URL,括号捕获数字
- user.php?id=$1:内部转发到真实文件,$1代表捕获的ID
- [L]:表示这是最后一条规则,不再匹配后续规则
处理PHP中的路径与参数获取
重写后,原始脚本仍正常运行。例如user.php中继续用$_GET['id']获取参数:
<?php
if (isset($_GET[‘id’])) {
$userId = intval($_GET[‘id’]);
echo “用户ID: ” . $userId;
}
?>
URL虽变美观,但PHP逻辑无需更改。
常见实用重写示例
以下是一些常用场景的规则:
- 隐藏.php扩展名:
RewriteRule ^(.+)$ $1.php [L] - 多参数路由:
RewriteRule ^post/([0-9]+)/([a-zA-Z0-9_-]+)$ post.php?id=$1&title=$2 [L] - 伪静态首页:
RewriteRule ^home$ index.php [L]
基本上就这些。只要Apache支持,.htaccess配置正确,就能实现干净的URL结构,提升用户体验和搜索引擎友好度。注意测试404错误,确保重写目标文件存在。
以上就是PHP代码怎么实现URL重写规则_PHP URL重写与.htaccess配置的详细内容,更多请关注php中文网其它相关文章!


