链接生成规则怎么设置?手把手教你配出干净好记的网址

做网站、搭博客、写后台管理,经常遇到一个问题:点开一篇文章,地址栏里是 /post?id=123 这种带问号和数字的链接,看着乱、不好记,还影响分享。其实只要改几行配置,就能让它变成 /article/如何设置链接生成规则 这样清爽又友好的形式——这就是链接生成规则在起作用。

先搞懂:链接生成规则到底管啥?

它不是浏览器的事,也不是服务器自动决定的,而是你用的程序(比如 WordPress、Typecho、Hexo、或者自己写的 PHP/Python 后台)在生成页面 URL 时,按你定的「模板」来拼出来的。比如:

文章ID → /post/{id}
文章标题 → /article/{slug}
分类+年份 → /category/{cat}/{year}/{post-slug}

这里的 {id}{slug}{cat} 就是变量,后面填什么、怎么组合,全由你定。

常见平台怎么设?

WordPress:进「设置 → 固定链接」,选「文章名」就直接启用 /hello-world/ 形式;想更细控,点「自定义结构」,输入:

/blog/%year%/%monthnum%/%postname%/
保存后,新文章链接就变成 /blog/2024/04/链接生成规则怎么设置

Typecho:后台 → 设置 → 永久链接,勾选「启用地址重写」,再填自定义格式,例如:

/archives/{cid}.html
或更直观的:
/post/{slug}.html
注意:得确保服务器支持 rewrite(Nginx 要加 location 规则,Apache 要开启 .htaccess)。

Hexo 静态博客:打开 _config.yml,找到 permalink: 这一行,改成:

permalink: article/:title/
生成后就是 /article/链接生成规则怎么设置/。还可以加日期:
permalink: :year/:month/:day/:title/

自己写后台?PHP 举个真例子

假设你用原生 PHP 做个小 CMS,文章列表页要生成链接,别硬写 ?id=45,改用函数统一处理:

function generatePostUrl($title, $id) {
    $slug = preg_replace('/[^a-z0-9\-]+/', '-', strtolower($title));
    return '/article/' . trim($slug, '-') . '-' . $id;
}
// 调用:generatePostUrl('链接生成规则怎么设置', 45);
// 输出:/article/链接生成规则怎么设置-45

这样既保留 ID 防重复,又让标题可读,搜索引擎也认。

小提醒:设完别忘两件事

一是检查服务器是否生效:如果点了新链接报 404,大概率是 Nginx 或 Apache 没配 rewrite 规则;二是旧链接别丢——上线前用 301 跳转把老 ?id=xxx 地址导到新地址,不然收藏夹和百度快照就断了。