
通过 Apache 的 mod_rewrite 模块,可将带查询参数的传统 URL(如 posts.php?name=what-is-btc)重写为简洁、语义化的路径式 URL(如 posts.php/what-is-btc),提升用户体验与搜索引擎收录效果。
通过 apache 的 mod_rewrite 模块,可将带查询参数的传统 url(如 `posts.php?name=what-is-btc`)重写为简洁、语义化的路径式 url(如 `posts.php/what-is-btc`),提升用户体验与搜索引擎收录效果。
要实现 localhost/website/posts.php/what-is-btc 这类用户友好且 SEO 友好的 URL,核心在于正确配置 .htaccess 文件,将路径形式的请求透明转发给实际的 PHP 脚本处理,同时保持 PHP 内部仍可通过 $_GET['name'] 获取参数。
✅ 正确的 RewriteRule 配置
首先确保你的服务器已启用 mod_rewrite,并在网站根目录(或 /website/ 子目录)下创建或编辑 .htaccess 文件。关键点如下:
-
必须匹配真实文件名:你目标脚本是
posts.php(注意拼写为posts,非post); -
路径需包含
.php后缀:RewriteRule 的目标必须显式写出.php; -
开头斜杠影响作用域:在虚拟主机或子目录中,建议使用相对路径(不加开头
/),或根据部署环境调整; -
标志位需规范:
[NC,L]中L表示“最后一条规则”,避免后续规则干扰,不可省略空格(应写作[NC,L],而非[NC, L])。
✅ 推荐使用的 .htaccess 规则(适用于 localhost/website/ 子目录):
RewriteEngine On RewriteBase /website/ # 将 posts.php/xxx 重写为 posts.php?name=xxx RewriteRule ^posts\.php/([A-Za-z0-9-]+)/?$ posts.php?name=$1 [NC,L,QSA]
? 说明:
RewriteBase /website/告诉 Apache 当前重写的基准路径,避免因子目录导致 404;^posts\.php/([A-Za-z0-9-]+)/?$精确匹配posts.php/开头 + 有效 slug(支持字母、数字、短横线);[QSA](Query String Append)确保原有查询参数(如有)能合并传递,增强兼容性;NC表示忽略大小写,L终止后续规则匹配。
? PHP 端保持兼容(无需修改)
你的 PHP 脚本 posts.php 无需改动,仍可直接使用:
SEO博客写作——撰写在Google排名靠前并被AI搜索引用的博客。采用E‑E‑A‑T内容体系,专为SaaS和初创企业设计。使用QAE写作模式(问题...)
<?php $slug = $_GET['name'] ?? '';
if (empty($slug)) {
http_response_code(404);
die('Post not found.');
}
// 示例:从数据库动态查询
$stmt = $pdo->prepare("SELECT * FROM posts WHERE slug = ?");
$stmt->execute([$slug]);
$post = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$post) {
http_response_code(404);
die('Post not found.');
}
echo "<h1>{$post['title']}</h1>";
echo "<p>{$post['content']}</p>";
?>
⚠️ 常见问题与注意事项
-
404 错误? 检查:
-
.htaccess是否位于正确目录(与posts.php同级); - Apache 是否启用
AllowOverride All(尤其在httpd.conf或虚拟主机配置中); -
mod_rewrite是否已加载(执行a2enmod rewrite && systemctl restart apache2)。
-
-
重定向循环? 确保规则目标不是再次触发自身(如误写成
posts.php/...→posts.php/...); -
本地开发(XAMPP/MAMP)? 默认可能禁用
.htaccess,请确认httpd.conf中对应区块含AllowOverride All; -
SEO 提示:为避免重复内容,建议在
posts.php中对原始?name=访问返回301重定向至干净 URL,或添加。
✅ 最终效果验证
访问以下任一地址,均应正常显示同一篇内容:
- ✅
http://localhost/website/posts.php/what-is-btc - ❌
http://localhost/website/posts.php?name=what-is-btc(建议 301 跳转到上者)
通过以上配置,你不仅实现了 URL 美化,更构建了可扩展、易维护、符合现代 Web 实践的路由基础。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










