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

如何使用htaccess重写博客URL?将动态URL转为静态格式

如何用.htaccess将动态博客URL重写为静态URL

没问题,我来一步步教你搞定这个URL重写需求——把http://www.website.co.uk/blog.php?story=85&title=contract-furniture-buying-guide转换成http://www.website.co.uk/blog/contract-furniture-buying-guide,核心是用Apache的mod_rewrite模块,具体步骤如下:

1. 确认mod_rewrite已启用

首先得确保你的Apache服务器开启了mod_rewrite模块:

  • 如果是自己管理服务器,检查httpd.conf(或apache2.conf)里有没有LoadModule rewrite_module modules/mod_rewrite.so这行(没有的话去掉前面的注释符号#),同时把网站目录对应的AllowOverride设置为All(这样.htaccess文件的规则才能生效)。
  • 如果是虚拟主机,大部分服务商默认会开启mod_rewrite,不确定的话可以联系主机客服确认。

2. 编写.htaccess规则

在网站根目录下创建(或编辑已有的).htaccess文件,添加以下规则:

# 开启mod_rewrite引擎
RewriteEngine On

# 将静态URL重写为动态脚本
RewriteRule ^blog/([a-z0-9-]+)$ blog.php?title=$1 [L,QSA]

规则细节解释

  • RewriteEngine On:必须放在最前面,用来启用mod_rewrite功能,没有这行所有重写规则都不会生效。
  • ^blog/([a-z0-9-]+)$:这是匹配静态URL的模式:
    • ^ 表示URL路径的开头
    • blog/ 是固定的前缀,对应你目标URL里的/blog/部分
    • ([a-z0-9-]+) 是一个捕获组,用来匹配标题内容(允许小写字母、数字和连字符,完全符合你示例里的contract-furniture-buying-guide格式)
    • $ 表示URL路径的结尾
  • blog.php?title=$1:把匹配到的请求转发到动态脚本,$1会替换成前面捕获组里的标题内容(比如contract-furniture-buying-guide)。
  • [L,QSA]:这是规则的标志:
    • L 表示“Last”,匹配到这条规则后就停止处理后续规则,避免冲突
    • QSA 表示“Query String Append”,如果用户访问静态URL时带了额外参数(比如/blog/contract-furniture-buying-guide?utm_source=google),会自动把这些参数附加到动态脚本的查询串里,非常实用

3. 注意事项

  • 如果你原本的story=85参数是必须的(比如博客系统需要用它来识别文章),那当前的目标静态URL里没有包含这个参数,你需要调整静态URL结构(比如改成/blog/85/contract-furniture-buying-guide),对应的规则也要修改。但根据你的需求,目标URL里没有story参数,所以默认你的博客系统可以通过title参数唯一识别文章,上面的规则就足够了。
  • 测试前记得清除浏览器缓存,避免旧的URL缓存影响测试结果。
  • 确保.htaccess文件的权限正确(一般设置为644),否则服务器可能无法读取它。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:09:22