每个人都想让自己的排名出现在搜索引擎结果的首页。影响搜索引擎排名的因素有很多,其中之一是人类可读的URL或对SEO友好的URL。对SEO友好的URL必须反映网站或博客的内容。
有两种方法可以使PHP中的url可读。一,通过使用Request_URi方法以及.htaccess文件。在本教程中,我将使用.htaccess文件为博客提供对SEO友好的URL。您可以使用相同的步骤来创建相同的操作。
让我们开始吧!
假设您正在运行一个使用自定义PHP代码开发的博客。每当你在你的博客上插入新帖子的时候,URL就会像这样产生:
www.yoursite.com/index.php?blog_id=1234
在本教程中,我们将把上面的URL改成:
www.yoursite.com/my-seo-url/
当你运行上述URL时或当你给URL提供一个博客ID时,会生成同样的内容。
步骤1:表中的更改
首先,当文章保存的时候,你需要修改你的表。在其中创建一个新的列并将其命名为
seo - url。
步骤2:使SEO友好的URL
让我们创建一个函数,它将为您生成对SEO友好的URL。
function seo_url($vp_string)
{
$vp_string = trim($vp_string);
$vp_string = html_entity_decode($vp_string);
$vp_string = strip_tags($vp_string);
$vp_string = strtolower($vp_string);
$vp_string = preg_replace('~[^ a-z0-9_.]~', ' ', $vp_string);
$vp_string = preg_replace('~ ~', '-', $vp_string);
$vp_string = preg_replace('~-+~', '-', $vp_string);
$vp_string .= "/";
return $vp_string;
}
上面的函数将把文章标题作为字符串返回SEO URL。就像这样:
my-SEO-URL /
您需要将此URL保存在我们在上一步创建的列中。
步骤3:修改.htaccess
由于我们已经生成了一个SEO URL,让我们进行一些更改。.htaccess将URL重定向到保存在数据库中的内容。如果尚未创建任何文件,则创建一个新文件并将其命名为. htaccess。现在粘贴下面的代码:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(([A-Za-z0-9]+[-]+[A-Za-z0-9]+)+[/])$ index.php?blog_url=$1 [NC,L] # Handle blog requests
让我们一步一步了解上面的代码:
第一行告诉Apache,我们将重写一些规则
RewriteEngine On
第二和第三行是检查调用URL是否是文件或目录名的条件。如果它是其中之一,URL将不会被重写。
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
最后一行是我们的重写URL。
RewriteURL”^(([A-Za-z0-9]+[-]+[A-Za-z0-9]+)+(/))$”是一个正则表达式检查URL“斜杠(/)”后,一个完整的域名。您可以使用这个站点来了解关于Regex的更多信息。
如果URL与Regex表达式匹配,那么匹配的URL将被重定向到
index .php?blog_url变量中的
index.php?blog_url=(matched URL)。
注意:如果出现错误,.htaccess文件您将得到500个内部服务器错误。
步骤4:索引文件的更改
现在在URL索引。您将使用$ _GET[' blog_url ']获得这个URL,并将此URL与您的表匹配,并可以快速显示全文。例如,在索引中。php文件你的数据库查询将被更改为:
$url = $_GET['blog_url'];
$query = "SELECT articles.article_name,articles.article_content,categories.category_name,articles.img,users.u_fname,users.u_lname,DATE_FORMAT(articles.date,'%d %Y') as dates
FROM article
INNER JOIN users
ON users.user_id = article.user_Id
INNER JOIN articles
ON articles.article_id = article.article_id
INNER JOIN categories
ON categories.category_id = articles.category_id
WHERE articles.url = '$url'";
所有的东西都会保持不变。当你运行你的新URL时,你会得到和你在发送博客id时得到的相同的内容。