【问题标题】:Creating dynamic auto-incrementing seo friendly url's from php and sql从 php 和 sql 创建动态自动递增的 seo 友好 url
【发布时间】: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]

【问题讨论】:

    标签: php mysql .htaccess seo


    【解决方案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
              

              应该做的伎俩

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2010-12-24
                • 2011-11-21
                • 2011-02-24
                • 2016-03-21
                • 2013-04-28
                • 2012-09-25
                • 2012-07-22
                相关资源
                最近更新 更多