Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用.htaccess将变量重写到目录_Php_Apache_.htaccess_Blogs - Fatal编程技术网

Php 使用.htaccess将变量重写到目录

Php 使用.htaccess将变量重写到目录,php,apache,.htaccess,blogs,Php,Apache,.htaccess,Blogs,我从零开始创建了一个博客来测试我的PHP/HTML/CSS/Jquery等技能。一切进展顺利,现在我想设置htaccess文件,这样当用户阅读博客文章时,URL就会显示 而不是 这可能吗 博客设置是将文章保存在数据库中。文章页面是根据博客文章的ID生成的。PHP通过ID检索整个post,并将其全部放入一个对象中。所以博客标题是$blogpost->title 您必须首先确保在您的站点上启用mod modrewrite 其次,文章的id必须在url中才能加载文章 例如,如果您想重写 http://

我从零开始创建了一个博客来测试我的PHP/HTML/CSS/Jquery等技能。一切进展顺利,现在我想设置htaccess文件,这样当用户阅读博客文章时,URL就会显示

而不是

这可能吗


博客设置是将文章保存在数据库中。文章页面是根据博客文章的ID生成的。PHP通过ID检索整个post,并将其全部放入一个对象中。所以博客标题是$blogpost->title

您必须首先确保在您的站点上启用mod modrewrite

其次,文章的id必须在url中才能加载文章

例如,如果您想重写

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

您可以将以下代码放入.htaccess中:

RewriteEngine on
RewriteRule ^blog/(\d+)/.*$ blog.php?id=$1 [L]

如果您的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]
或者,您可以在posts表中添加新字段,称为permalink或其他名称,并使用它来检索post,而不是ID。如下所示:

SELECT * FROM posts WHERE permalink LIKE 'post-title-here'

您好,可以使用htaccess文件重新生成您的URL。您只需为要生成的新URL编写一个规则我认为这在htaccess中是不可能的,因为它不知道您的ID/标题关系是什么。除非你丢失了所有的博客帖子[id]=>[title],否则我不确定htaccess将如何重写URL?这在htaccess中是不可能的,因为它能找到的最接近你的是http://www.mysite.com/blog/30. 你将需要使用php来做你想做的事情。非常感谢这一点。这和我想要的很接近。是否有任何PHP明智的改变URL或是有必要有张贴ID在那里。我问这个问题的唯一原因是因为我的wordpress网站是这样设置的,所以我这样做的主要原因是为了SEO,那么/blog/20/itsapts和/blog/itsapts是可以接受的,同样的/blog/itsapts对SEO来说是值得的,还是SEO不在乎数字被用作目录?我知道SEO讨厌变量,但目录呢?同样感谢,这是非常有用的:@BITmixit我一直认为规范的URL www.site.com/like-this-one更容易让人阅读,因为人们可以通过简单地阅读链接的slug来了解链接背后的内容。我不能从SEO的角度说什么是更好的,但是在站点中还有很多其他更重要的事情要做&页面,以便更好地优化它们并获得更高的排名。检查这里
SELECT * FROM posts WHERE permalink LIKE 'post-title-here'