You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过.htaccess实现带分类名与文章路径的URL重写

重写规则配置方案

首先确认前置条件:Apache 已开启 mod_rewrite 扩展,且站点目录配置中 AllowOverride 参数设为 All,保证 .htaccess 文件可以正常生效。

将以下配置写入你blog目录下的.htaccess文件即可:

RewriteEngine On

# 美化URL映射:将 /blog/分类名/文章路径 转发到实际PHP处理文件
RewriteRule ^([^/]+)/([^/]+)/?$ post_details.php?category_name=$1&post_id=$2 [L,QSA]

规则说明

  • 正则部分^([^/]+)/([^/]+)/?$:匹配blog目录下的两级路径,第一组([^/]+)捕获分类名称,第二组([^/]+)捕获文章标识post_url,末尾的/?兼容末尾带斜杠和不带斜杠的两种访问形式
  • $1、$2分别对应前面正则捕获到的分类名、文章标识参数,直接传入到原PHP文件的查询参数中
  • 标记[L]代表匹配到当前规则后停止后续重写逻辑,[QSA]表示保留原URL中携带的其他额外查询参数(如果有相关需求)

如果需要将旧的访问URL自动301跳转到新的美化格式,避免搜索引擎重复收录,可以额外增加以下规则:

# 旧URL 301跳转到新美化URL
RewriteCond %{THE_REQUEST} /post_details\.php\?category_name=([^&]+)&post_id=([^&\s]+) [NC]
RewriteRule ^post_details\.php$ /blog/%1/%2? [L,R=301,NC]

注意事项

  • 部署完成后建议清除浏览器缓存后再测试,301跳转规则会被浏览器默认缓存,容易导致测试结果不符合预期
  • 若你的分类或文章标识仅支持英文、数字、下划线、短横线,可将正则中的[^/]+替换为[a-zA-Z0-9_-]+,规则匹配会更严谨

内容的提问来源于stack exchange,提问作者Vikash Anand Jha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:00:02