2014-04-25 60 views
0

我从头创建了一个博客来测试我的PHP/HTML/CSS/Jquery技能等等。所有的事情进展顺利,现在我想建立htaccess,因此,当用户阅读博客文章的网址读取使用.htaccess重写变量到目录

http://www.mysite.com/blog/post-title-here

,而不是

http://www.mysite.com/blog.php?id=30

这可能吗?

博客设置是将帖子保存在数据库中。帖子页面是基于博客帖子的ID生成的。 PHP通过ID检索整个帖子,并将其全部推送到一个对象中。所以博客标题是$ blogpost-> title;

+0

你好, 这可以通过使用htaccess文件重新生成你的URL。你只需要为你想生成的新网址写一个规则 – KinjalMistry

+0

我不认为在htaccess中这是可能的,因为它不知道你的ID /标题关系是什么。除非你失去了所有博客文章[“id”] => [“title”],那么我不确定htaccess会如何重写URL? – MJoraid

+0

这是不可能的最接近它可以让你是'http:// www.mysite.com/blog/30' htaccess。你将需要使用PHP来做你想做的。 – Howli

回答

0

您必须首先确保您的网站上启用了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] 
+0

非常感谢这一点。这接近我正在寻找的东西。 有没有什么PHP明智的更改URL或是否有必要在其中有帖子ID。 我问的唯一原因是因为我的WordPress的网站设置,使每个博客文章是http://www.wordpressisshit.com/hey-its-a-post 我这样做的主要原因是对于搜索引擎优化,所以会/博客/ 20/itsapost是可以接受的相同/博客/ itsapost – BITmixit

0

如果你的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' 
+0

这是值得做的SEO或将SEO不关心数字被用作目录?我知道SEO讨厌变数,但是目录呢?此外,谢谢,这是非常有用的:) – BITmixit

+0

@BITmixit我一直认为规范的URL“www.site.com/like-this-one”更具人类可读性,因为人们可以真正了解链接后面的内容通过简单地阅读它的slu。。我不能说从SEO的角度来看什么更好,但是在网站和页面中还有很多其他(更重要的)事情要做,以便更好地优化它们并获得更高的排名。在这里检查[什么使得“友好的URL”?](http://stackoverflow.com/questions/522466/what-makes-a-friendly-url) –