4

在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]
4

6 回答 6

1

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

使用 PHP 的 SEO 友好 URL

于 2013-04-09T08:52:56.010 回答
1

我会在数据库中创建另一个名为“slug”的列,并使其成为唯一的字符串。现在,当添加一条新记录时,我会为这条记录生成 slug。

我找到了一个创建 slug 的函数示例作为对这个问题的回答:PHP function to make slug (URL string)

引用问题的答案中提供的 slugify-function 不会检查该值是否已存在于您的数据库中。如果 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

于 2013-04-09T15:37:41.397 回答
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,并根据需要在 HTACCESS 中进行更改。

于 2013-03-05T05:11:49.280 回答
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>
于 2013-04-09T13:48:20.017 回答
0

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

<a href="<?php **echo** $row[first_name] ?>-<?php **echo** $row[last_name] ?>"
于 2013-03-05T05:28:34.603 回答
-1
RewriteEngine on
RewriteBase /
RewriteRule ^([^.*]+)$ profile.php?uid=$1

应该做的伎俩

于 2013-04-09T13:42:34.630 回答