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

如何通过.htaccess在URL中新增年份目录并匹配指定文章?

如何通过.htaccess在URL中新增年份目录并匹配指定文章?

嗨,我来帮你搞定这个.htaccess的URL重写问题!你想要给新文章的URL加上4位数字的年份目录(比如2025、2026),同时让服务器能正确找到对应的PHP内容,对吧?

首先,你需要在网站根目录的.htaccess文件里添加下面的重写规则——先确保开启重写引擎,再写匹配年份格式的规则:

RewriteEngine On

# 匹配带年份的URL:/年份/分类/文章别名,转发到PHP处理脚本
RewriteRule ^(\d{4})/([^/]+)/([^/]+)$ article.php?year=$1&category=$2&slug=$3 [L,QSA]

# 可选:兼容旧的不带年份的URL,让旧链接依然能正常访问
RewriteRule ^([^/]+)/([^/]+)$ article.php?category=$1&slug=$2 [L,QSA]

我给你拆解下这些规则的作用:

  • RewriteEngine On:这是开启重写的“开关”,没有它所有重写规则都不会生效,必须放在最前面。
  • 第一条规则里,^(\d{4})专门抓取4位数字的年份(比如2025、2026,确保只有合法的年份格式才会被匹配);后面的两个([^/]+)分别抓取你的分类名(比如flowers-and-garden)和文章别名(比如white-flowers-in-spring)。这些被抓取的内容会作为参数传给你的PHP处理脚本(这里用article.php举例,你可以改成自己实际用的脚本文件名)。
  • 规则末尾的[L,QSA]是两个关键标志:L表示匹配到这条规则后就停止往下执行其他规则;QSA的作用是如果原URL里带了其他参数(比如?utm_source=xxx),会自动把这些参数附加到转发后的URL上,不会丢失。

接下来,你的PHP脚本里就可以通过$_GET['year']拿到年份,$_GET['category']拿到分类,$_GET['slug']拿到文章别名,然后根据这些值去数据库或者文件系统里找到对应的文章内容就行。

最后给你提几个小注意事项:

  • 要确认你的Apache服务器开启了mod_rewrite模块,要是没开的话这些规则不会生效,你可以联系主机商帮忙开启,或者自己在服务器配置里打开。
  • 如果根目录已经有.htaccess文件,别直接覆盖掉原来的内容,把这些规则加在现有规则的前面或者合适的位置,避免和旧规则冲突。
  • 测试的时候直接访问带年份的URL,比如www.example.com/2025/flowers-and-garden/white-flowers-in-spring,然后在PHP脚本里用var_dump($_GET)看看参数是不是都正确传过来了,这样能快速排查问题。

备注:内容来源于stack exchange,提问作者3D-kreativ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 16:28:04