从 php 和 sql 创建动态自动递增的 seo 友好 url
Posted
技术标签:
【中文标题】从 php 和 sql 创建动态自动递增的 seo 友好 url【英文标题】:Creating dynamic auto-incrementing seo friendly url's from php and sql 【发布时间】:2013-02-19 09:43:53 【问题描述】:点击位置 user_id 1 的用户 John Smith 它应该转到 URL www.example.com/John-Smith 而不是 profile.php?uid=1
当您点击 user_id 2 中的用户 John Smith 时,它应该转到网址 www.example.com/John-Smith-2 profile.php?uid=2
当您在 user_id 3 中单击用户 Kia Dull 时,它应该转到网址 www.example.com/Kia-Dull profile.php?uid=3
Table Users
User_id First_name last_name
1 John Smith
2 John Smith
3 Kia Dull
如何为此格式化我的 .Htaccess 文件和 php/sql。
当点击用户个人资料时,我只是简单地将其引导到此处。
<a href="<?php echo $row[first_name] ?>-<?php echo $row[last_name] ?>"
什么都不做。
这是我的 .htaccess
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)$ profile.php?uid=$1 [L]
【问题讨论】:
【参考方案1】:看看下面的文章。希望它描述清楚/简单,并举例说明您需要什么。
SEO Friendly URLs with PHP
【讨论】:
【参考方案2】:我会在数据库中创建另一个名为“slug”的列,并使其成为唯一的字符串。现在,当添加一条新记录时,我会为这条记录生成 slug。
我找到了一个创建 slug 的函数示例,作为对这个问题的回答:PHP function to make slug (URL string)
引用问题的答案中提供的 slugify 函数不会检查该值是否已存在于您的数据库中。如果 slug 已经存在,你必须自己做,并添加一个像“-1”这样的后缀。
如果您已经完成了所有这些操作,您的数据应该如下所示:
Table Users
User_id First_name Last_name Slug
1 John Smith john-smith
2 John Smith john-smith-1
3 Kia Dull kia-dull
接下来的步骤应该很容易。
这将是创建链接的一个选项:
<a href="<?php echo $row['Slug'] ?>"><?php echo $row['First_name'] ?> <?php echo $row['Last_name'] ?></a>
.htaccess 文件应该没问题,就像你已经拥有它一样......
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)$ profile.php?uid=$1 [L]
您只需要在您的 profile.php 文件中查询该表以获取类似 $_GET['uid'] 的值。现在我将参数 uid 重命名为 slug,因为它不再是一个 ID,但是你可以通过在 slug 后面查询很容易得到 ID。
此解决方案的好处:
易于调试。蛞蝓是你可以在数据库中找到的 1:1 的东西。如果您现在有一个 URL,您无需猜测就可以知道它是哪个用户。 一致。即使您删除了 id=1 的行,行 id=2 仍然会有 slug "john-smith-1"仅供参考:
slug 是 URL 的一部分,它使用人类可读的关键字来标识页面。 http://en.wikipedia.org/wiki/Clean_URL#Slug
【讨论】:
【参考方案3】:你错过了一点代码,确切的代码是这样的......
<a href="<?php echo $row['first_name']."-".$row['last_name']."-".$row['User_id']."profile.php?uid=".$row['User_id']; ?>"><?php echo $row['first_name']."-".$row['last_name']."-".$row['User_id']; ?></a>
这将创建您想要的 URL,并根据需要在 HTACCESS 中进行更改。
【讨论】:
【参考方案4】:您必须使用“回显”来显示该链接中的数据,
<a href="<?php **echo** $row[first_name] ?>-<?php **echo** $row[last_name] ?>"
【讨论】:
【参考方案5】:将此用于您的 htaccess 规则。该规则基本上匹配以-
后跟数字结尾的任何内容
RewriteEngine on
RewriteBase /
RewriteRule -([\d]+)$ profile.php?uid=$1 [L]
还有这样的链接。
<a href="<?=$row['first_name']?>-<?=$row['last_name']?>-<?=$row['user_id']?>">User</a>
【讨论】:
【参考方案6】:RewriteEngine on
RewriteBase /
RewriteRule ^([^.*]+)$ profile.php?uid=$1
应该做的伎俩
【讨论】:
以上是关于从 php 和 sql 创建动态自动递增的 seo 友好 url的主要内容,如果未能解决你的问题,请参考以下文章
SEO工具箱:PHP自动生成PHPCMS伪静态规则.htaccess