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

如何使用mod_rewrite配置实现博客友好URL改写

前置环境校验

  • 确认Apache的mod_rewrite模块已启用:打开Apache主配置文件,找到LoadModule rewrite_module modules/mod_rewrite.so配置行,确保行首没有#注释符,修改后重启Apache生效。
  • 确认站点目录权限配置:找到博客根目录对应的<Directory>配置段,将AllowOverride None修改为AllowOverride All,修改后重启Apache生效。

.htaccess配置

将以下内容写入/blog目录下的.htaccess文件中:

RewriteEngine On

# 跳过真实存在的文件、目录,避免静态资源被重写
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 测试用规则:用文章ID作为路径,验证重写是否生效,测试通过可删除
RewriteRule ^([0-9]+)$ ?action=viewArticle&articleId=$1 [L]

# 正式规则:匹配字母、数字、横杠、下划线组成的文章别名,传入参数到后端
RewriteRule ^([a-zA-Z0-9_-]+)$ ?action=viewArticle&articleSlug=$1 [L]

测试阶段可将规则末尾的[L]改为[R=302,L],访问时浏览器地址栏会显示跳转后的完整参数地址,方便排查问题,确认规则生效后改回[L]即可。

后端程序适配

  • 若仅测试功能,使用测试规则即可,访问/blog/2可直接打开对应文章。
  • 若要使用/blog/name-of-article格式的别名URL,需要给文章表新增slug字段存储每个文章的唯一别名,修改viewArticle的查询逻辑:优先判断如果传入articleSlug参数,就通过别名查询对应文章内容。
  • 旧链接兼容:在viewArticle逻辑中新增判断,如果当前请求是旧格式的带参数URL,拿到对应文章的别名后返回301状态码跳转到新的友好URL,避免搜索引擎重复收录。

内容的提问来源于stack exchange,提问作者user2097644

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:36:03