php 实现伪静态
PHP 实现伪静态的方法
伪静态(URL Rewrite)是通过服务器配置将动态URL转换为静态URL的技术,提升SEO友好性和用户体验。以下是几种常见的实现方式:
使用Apache的.htaccess文件
在网站根目录创建或修改.htaccess文件,启用mod_rewrite模块:
RewriteEngine On
RewriteRule ^article/([0-9]+).html$ article.php?id=$1 [L]
^article/([0-9]+).html$匹配类似article/123.html的URL。article.php?id=$1将请求重定向到实际动态脚本,$1捕获正则中的数字ID。
确保Apache配置允许覆盖:

<Directory "/var/www/html">
AllowOverride All
</Directory>
Nginx服务器配置
在Nginx的站点配置文件中(如/etc/nginx/sites-available/default)添加规则:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ ^/article/([0-9]+)\.html$ {
rewrite ^/article/([0-9]+)\.html$ /article.php?id=$1 last;
}
try_files优先检查静态文件,不存在则转发到index.php。rewrite将伪静态URL映射到实际PHP脚本。
PHP框架内置路由
现代框架(如Laravel、Symfony)内置路由功能。以Laravel为例:

// routes/web.php
Route::get('/article/{id}.html', function ($id) {
return ArticleController::show($id);
});
框架自动处理URL到控制器的映射,无需手动配置服务器。
动态脚本处理伪静态参数
在PHP脚本中解析伪静态URL(需配合服务器配置):
// article.php
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
// 根据ID查询数据库并渲染页面
注意事项
- 服务器支持:确认Apache的
mod_rewrite或Nginx的rewrite模块已启用。 - 缓存问题:伪静态URL可能被浏览器缓存,更新时需清除缓存。
- 正则匹配:确保正则表达式精确匹配目标URL,避免冲突。
通过上述方法,动态URL如article.php?id=123可转换为article/123.html,兼顾美观与功能。






