我正在尝试弄清楚如何修改地址栏中的网址以显示文章的标题。
我有一个博客,其帖子是从mysql数据库中提取的,每个博客帖子详细视图的链接都是blog_details.php?lesson_id=$articleID
生成的。我似乎无法弄清楚的是,我如何重写网址以显示/article-title/
而不是/blog_details.php?lesson_id=abc
以及在检索帖子内容时如何处理新网址。
我知道如果我使用
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请求以检索新网址?
答案 0 :(得分:2)
如果您希望网址只是/article-title
,那么添加“slug”列会更有效率,正确索引并使用它来检索条目。
如果您对/article-title/id
这样的网址没问题,可以在不触及数据库的情况下完成此操作。我假设ID是一个数字。
RewriteRule ^([^/]+)/([0-9]+)$ /blog_details.php?lesson_id=$2
这类似于StackOverflow处理其URL的方式。您绝对应该在网站上输出规范网址以防止重复内容,因为传递的“标题”无关紧要并且可能会变得奇怪。例如:/some-article-title/123
和/some-other-article-title-123
都会将您带到123
。
答案 1 :(得分:1)
这是我在这种情况下通常做的事情。 首先,是您需要创建一个单独的列并存储文章的标题。 然后,使用此规则..您可以重写: - blog_details.php?lesson_id = 到此: - 的 /物品/ articletitle 强>
重写规则: -
RewriteRule ^articles/(.+)$ blog_details.php?id=$1 [L,QSA]
注意: - 您需要通过ID获取网址标题。