如何创建一个没有ID的漂亮的帖子链接

时间:2015-09-07 14:20:01

标签: php .htaccess mod-rewrite

我有这样的链接:

 http://localhost/mywebsite/post.php?title=my-post-title&id=2

或者

 http://localhost/mywebsite/post/my-post-title/2/  

(使用mvc)

但我需要显示没有ID的链接,就像互联网上的许多网站一样。

前:

 localhost/mywebsite/post/my-post-title/

2 个答案:

答案 0 :(得分:5)

您需要使用mod_rewrite来美化您的网址。请查看此链接:http://www.sitepoint.com/guide-url-rewriting/

以上是上面的示例mod_rewrite

RewriteEngine on

RewriteRule ^mywebsite/(.*)/(.*)$ mywebsite/post/?title=$2 [QSA]

通过 - How to beautify the URL?

答案 1 :(得分:2)

网址必须包含唯一标识符。没有它,您的应用程序无法知道要显示哪个帖子。在这种情况下,您需要为帖子创建第二个唯一标识符(除了整数ID):这称为slug

因此,除了idtitle列之外,添加slug列并使用UNIQUE键。此列应该是帖子标题的URL安全字符串转换(例如,“这是我的第一篇文章!”的标题可以给出一个“这是我的第一篇帖子”的标题)。如果slug已经在使用中,这可能需要预先添加一个额外的字符(或更多),即如果你有两个标题为“This is a post”的帖子,那么第一个将有一个slug“this-is-a-post”而第二个将有“这是一个后2”的slu ..

一旦创建了slug并将其分配给帖子,这将被用作URL中的标识符。使用mod_rewrite,您需要将http://localhost/mywebsite/post/my-post-title重写为http://localhost/mywebsite/post.php?slug=my-post-title,然后在数据库中查询slug = $_GET['slug']的帖子。