我有这样的链接:
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/
答案 0 :(得分:5)
您需要使用mod_rewrite
来美化您的网址。请查看此链接:http://www.sitepoint.com/guide-url-rewriting/
以上是上面的示例mod_rewrite
:
RewriteEngine on
RewriteRule ^mywebsite/(.*)/(.*)$ mywebsite/post/?title=$2 [QSA]
答案 1 :(得分:2)
网址必须包含唯一标识符。没有它,您的应用程序无法知道要显示哪个帖子。在这种情况下,您需要为帖子创建第二个唯一标识符(除了整数ID):这称为slug。
因此,除了id
和title
列之外,添加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']
的帖子。