使用 .htaccess 将变量重写到目录
Posted
技术标签:
【中文标题】使用 .htaccess 将变量重写到目录【英文标题】:Using .htaccess to rewrite variable to directory 【发布时间】:2014-06-10 22:54:28 【问题描述】:我从零开始创建了一个博客来测试我的 php/html/CSS/Jquery 技能等。一切顺利,现在我想设置 htaccess 文件,以便当用户阅读博客文章时,URL 会读取
http://www.mysite.com/blog/post-title-here
而不是
http://www.mysite.com/blog.php?id=30
这可能吗?
博客设置是将帖子保存在数据库中。文章页面是根据博客文章的 ID 生成的。 PHP 通过 ID 检索整个帖子并将其全部推送到一个对象中。所以博客标题是 $blogpost->title;
【问题讨论】:
您好,可以使用 htaccess 文件重新生成您的 URL。您只需为要生成的新 URL 编写规则 我认为这在 htaccess 中是不可能的,因为它不知道你的 ID/title 关系是什么。除非您丢失了所有博客文章 ["id"]=>["title"],否则我不确定 htaccess 将如何重写 URL? htaccess 不可能做到这一点,它可以让你最接近的是http://www.mysite.com/blog/30
。你需要使用 php 来做你想做的事。
【参考方案1】:
如果您的 PHP 脚本根据其 ID 检索帖子,那么您必须将其包含在 URL 中。你可以试试这个:
http://www.mysite.com/blog/30/post-title-here
然后修改您的 .htaccess 文件以读取 ID 参数,如下所示:
RewriteEngine on
RewriteRule ^blog/([0-9]+)/([a-zA-Z-_])$ blog.php?id=$1 [L]
或者您可以在您的帖子表中添加新字段,称为permalink
或其他名称,并使用它来检索帖子,而不是 ID。像这样:
SELECT * FROM posts WHERE permalink LIKE 'post-title-here'
【讨论】:
这对 SEO 是否值得做,还是 SEO 不关心数字被用作目录?我知道 SEO 讨厌变量,但目录呢?也谢谢,这非常有用:) @BITmixit 我一直认为规范 urlwww.site.com/like-this-one
更易于阅读,因为人们实际上可以通过简单地阅读链接来了解链接背后的内容。从 SEO 的角度来看,我真的不能说什么更好,但是为了更好地优化它们并获得更高的排名,在网站和页面中还有许多其他(更)更重要的事情要做。在这里查看What makes a “friendly URL”?【参考方案2】:
您必须首先确保在您的网站上启用了 mod modrewrite。
其次,帖子的 id 必须在 url 中才能加载帖子。
例如,如果你想重写
http://www.mysite.com/blog/30/post-title-here
到
http://www.mysite.com/blog.php?id=30
您可以将以下代码放入您的 .htaccess 中:
RewriteEngine on
RewriteRule ^blog/(\d+)/.*$ blog.php?id=$1 [L]
【讨论】:
非常感谢这个位。这与我正在寻找的东西很接近。是否有任何 PHP 明智的方法可以更改 URL,或者是否必须在其中包含帖子 ID。我问的唯一原因是因为我的 wordpress 网站已设置,因此每个博客文章都是 wordpressisshit.com/hey-its-a-post 我这样做的主要原因是为了 SEO,所以 /blog/20/itsapost 与 /blog/ 一样可以接受它的邮政以上是关于使用 .htaccess 将变量重写到目录的主要内容,如果未能解决你的问题,请参考以下文章