如何自定义地址栏中的URL以显示文章标题


How can I customize the URL in the address bar to display the article title?

我想知道如何修改地址栏中的URL以显示文章的标题。

我有一个博客,其中的帖子是从mysql数据库中提取的,每个博客帖子的详细视图链接都生成为blog_details.php?lesson_id=$articleID。我似乎不知道如何重写url以显示/article-title/而不是/blog_details.php?lesson_id=abc,以及在检索帖子内容时如何处理新url。

我知道如果我使用

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ /blog_details.php?lesson_id=$1

它会显示为abc,但abc不是帖子的标题,而是ID。我需要在数据库中创建一个单独的列,并将url-article-title存储在其中,然后将信息传递到URL blog_details.php?lesson_id=中吗?

另一个问题是,在我的blog_details.php中,我使用if(isset()){$_GET[]}来检索当前的文章ID,并通过它加载文章的内容。我必须如何修改$_GET请求才能检索新的url?

如果您希望url仅为/article-title,那么添加一个"slug"列会更有效,对其进行适当索引,并使用它来检索条目。

如果你对/article-title/id这样的url很满意,你就可以在不接触数据库的情况下完成它。我假设身份证是一个数字。

RewriteRule ^([^/]+)/([0-9]+)$ /blog_details.php?lesson_id=$2

这与StackOverflow处理其URL的方式类似。你绝对应该在网站上输出规范的URL,以防止内容重复,因为传递的"标题"无关紧要,可能会变得奇怪。例如:/some-article-title/123/some-other-article-title-123都会将您带到123

这是我在这种情况下通常会做的事情。首先,yes您需要创建一个单独的列并存储文章的标题。然后,使用此规则。。你可以重写这个:-blog_details.php?lesson_id=到此:-/文章/文章

重写规则:-

RewriteRule ^articles/(.+)$ blog_details.php?id=$1 [L,QSA]

注意:-您需要通过id获取url标题。