从php和sql创建动态自动递增seo友好URL

时间:2013-03-05 05:02:50

标签: php mysql .htaccess seo

点击用户John Smith的位置 user_id 1它应该转到网址www.example.com/John-Smith而不是profile.php?uid = 1

当您在 user_id 中点击用户John Smith时,它应该转到网址www.example.com/John-Smith-2 profile.php?UID = 2

当您点击 user_id 中的用户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]

6 个答案:

答案 0 :(得分:1)

看看下面的文章。希望它描述清晰/简单,并举例说明您的需求。

SEO Friendly URLs with PHP

答案 1 :(得分:1)

我会在数据库中创建另一个名为“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。

此解决方案的好处:

  • 易于调试。 slu is是你可以在数据库中找到1:1的东西。如果你现在有一个URL,你可以告诉它,而不是猜测它是哪个用户。
  • 一致。即使您删除id = 1的行,行id = 2仍然会有slug“john-smith-1”

<强>供参考:

  

slug是URL的一部分,它使用人类可读的关键字标识页面。   http://en.wikipedia.org/wiki/Clean_URL#Slug

答案 2 :(得分:0)

你错过了一点代码,确切的代码是这样的......

<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,并根据需要在URL中进行更改。

答案 3 :(得分:0)

您必须使用“echo”来显示该链接中的数据

<a href="<?php **echo** $row[first_name] ?>-<?php **echo** $row[last_name] ?>"

答案 4 :(得分:0)

将此用于您的htaccess规则。该规则基本上匹配任何以-结尾的数字

RewriteEngine on
RewriteBase /
RewriteRule -([\d]+)$ profile.php?uid=$1 [L]

您的链接就是这样的。

<a href="<?=$row['first_name']?>-<?=$row['last_name']?>-<?=$row['user_id']?>">User</a>

答案 5 :(得分:-1)

RewriteEngine on
RewriteBase /
RewriteRule ^([^.*]+)$ profile.php?uid=$1

应该做的伎俩