Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
搜索引擎优化友好的URL';s和查询数据库php_Php_Url_Mod Rewrite_Url Rewriting_Slug - Fatal编程技术网

搜索引擎优化友好的URL';s和查询数据库php

搜索引擎优化友好的URL';s和查询数据库php,php,url,mod-rewrite,url-rewriting,slug,Php,Url,Mod Rewrite,Url Rewriting,Slug,我已经搜索了这个问题的答案,找到了一篇与之相关的文章,但没有给出确切的答案。可以在这里找到: 我正在使用此功能将我的博客标题转换为SEO友好的URL字符串: //SEO Friendly URLS public static function Seo($input){ $input = str_replace(array("'", "-"), "", $input); $input = mb_convert_case($input, MB_CASE_LOWER, "UTF-8"

我已经搜索了这个问题的答案,找到了一篇与之相关的文章,但没有给出确切的答案。可以在这里找到:

我正在使用此功能将我的博客标题转换为SEO友好的URL字符串:

//SEO Friendly URLS
public static function Seo($input){
    $input = str_replace(array("'", "-"), "", $input); 
    $input = mb_convert_case($input, MB_CASE_LOWER, "UTF-8"); 
    $input = preg_replace("#[^a-zA-Z0-9]+#", "-", $input); 
    $input = preg_replace("#(-){2,}#", "$1", $input); 
    $input = trim($input, "-"); 
    return $input; 
}
这将把像“我的博客标题”这样的标题转换成“我的博客标题”,这很好。然而,我通常在URL中传递博客ID,以便从数据库中获取博客,但我试图保持真正友好的URL

我知道我可以将blog ID作为第二个查询字符串传递到标题的末尾,比如mysite.com/page.php?post=my blog post&ID=1,但这看起来仍然很糟糕。我将使用.htaccess从URL中删除.php和“?”,但我不确定如何在传递ID的同时保持一个漂亮的URL


当使用博客标题作为URL查询时,如何查询数据库?

URL友好版本的标题通常被称为slug。如果将slug存储在数据库表中,则可以使用它检索文章。无论如何,最好存储段塞,这样一旦创建段塞,它就永远不会更改

例如,假设您在Seo功能中发现并修复了一个bug,它可能会更改您的URL,这显然是一个糟糕的Seo。将slug存储在数据库中可以避免这个问题


如果您存储slug,那么您可能还希望每个博客类别都有一个slug。这样,您就更接近于模仿文件系统,不再需要确保每个slug都是完全唯一的。虽然你不可能在不同的目录中拥有相同标题的文章,但在构建网站时,需要考虑一些事情。

< P> URL友好的标题版本通常被称为蛞蝓。如果将slug存储在数据库表中,则可以使用它检索文章。无论如何,最好存储段塞,这样一旦创建段塞,它就永远不会更改

例如,假设您在Seo功能中发现并修复了一个bug,它可能会更改您的URL,这显然是一个糟糕的Seo。将slug存储在数据库中可以避免这个问题


如果您存储slug,那么您可能还希望每个博客类别都有一个slug。这样,您就更接近于模仿文件系统,不再需要确保每个slug都是完全唯一的。虽然你不可能在不同的目录中拥有同一标题的文章,但在构建站点时需要考虑的事情。

你可以使用Apache的<代码> MODY-Read < /Cult>模块。这是最常见的做法

使用
.htaccess
重写规则

RewriteRule^([^?]*)index.php?路由=$1[L,QSA]

URL
http://example.com/en/my-life/first-impression
将被“重写”并作为GET参数
route
传递到
index.php

在PHP中用破折号将其分解

$parts=explode('/',$\u GET['route'])

这就是如何获取url的所有部分,并相应地生成PHP逻辑

$parts[0] => language code
$parts[1] => category
$parts[2] => post SEO title

您可以使用Apache的
mod_rewrite
模块。这是最常见的做法

使用
.htaccess
重写规则

RewriteRule^([^?]*)index.php?路由=$1[L,QSA]

URL
http://example.com/en/my-life/first-impression
将被“重写”并作为GET参数
route
传递到
index.php

在PHP中用破折号将其分解

$parts=explode('/',$\u GET['route'])

这就是如何获取url的所有部分,并相应地生成PHP逻辑

$parts[0] => language code
$parts[1] => category
$parts[2] => post SEO title

你可以使用半标题结构(它仍然是SEO友好的)例如:其中234是条目id。你不能使用url的be
Example.com/id/title
例如:
Example.com/1/my blog title
explode('/'$input)
谢谢的Richard,我想我都没想到。我要试一试。我只是想,因为我看到很多博客都是这样做的,所以有一种更简单的方法。你可以使用半标题结构(它仍然支持SEO)例如:其中234是条目id。你不能使用url的be
Example.com/id/title
例如:
Example.com/1/my blog title
explode('/'$input)
谢谢,我是Richard,我想我都没想到。我要试一试。我只是想,因为我看到这么多的博客都是这样做的,所以有一种更简单的方法。谢谢你,这是一个很好的方法来实现我想做的事情。谢谢你,这是一个很好的方法来实现我想做的事情。