从 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的主要内容,如果未能解决你的问题,请参考以下文章

sql 使用自动递增主键创建表

从变量开始的反向递增列

SEO工具箱:PHP自动生成PHPCMS伪静态规则.htaccess

SQL 用户 ID 自动递增

在 MS SQL 2005 或 2008 中自动递增多个标识列

[QT][SQL]sql学习记录5_sqlite Autoincrement(自动递增)