【问题标题】:How do I create a SEO-friendly URL to incorporate a PHP variable/piece of code?如何创建对 SEO 友好的 URL 以包含 PHP 变量/代码段?
【发布时间】:2011-08-11 23:04:32
【问题描述】:

我有以下 PHP 代码,这是一个文件名,我将其用作我向查看者提供的每次下载的页面标题。我希望能够拥有对 SEO 友好的标题和 URL。

<?php echo $file_info[21]; ?>

每个页面的 URL 如下所示:

http://site.com/directory/download_interim_finder.php?it=ZWtkaW1rcmInbn1ma3h9aXFLcHN6fWVzeDgnISJoO3tran0reW97cSd1YHR5YHZIbWBmfzxwY3tiOnxycnA8Y25zfWpna3Y+YXtlZnl7dnJLf3J8cWd2fT4kJCIramFbcm1tbWRqdHJmJnR2ZGhKd3JpdShQdGV+bX09fWh0b2JnfXx9anV2J3F7YHh4d3Z2S3Jyf3ZmdX8pNyg1anZ/bnhpdGJwVnx5cXF5Zn5bYW14cHp2bTQiKXFsYw==

我想将这个长 URL 转换为对 SEO 更友好的东西,并将我上面指定的 php 代码合并为类似“filename.php”的东西,而不是您在此处看到的长 URL。

我希望使用 .htaccess,但我了解到您无法通过那里进行操作。我花了几个小时寻找解决此问题的方法,但找不到解决方案。任何帮助将不胜感激。

谢谢!

【问题讨论】:

    标签: php .htaccess seo rewrite


    【解决方案1】:

    关于使用 PHP 和 .htaccess mod 重定向创建具有动态内容的 SEO 友好 URL 的分步说明。友好的 URL 可以提高您的网站搜索引擎排名。在尝试之前,您必须在 httpd.conf 中启用 mod_rewrite.so 模块。只需几行 PHP 代码即可将标题数据转换为干净的 URL 格式,这很简单。

    数据库

    示例数据库博客表列 id、title、body 和 url。

    CREATE TABLE `blog`
    (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `title` TEXT UNIQUE,
    `body` TEXT,
    `url` TEXT UNIQUE,
    );
    

    Publish.php

    包含 PHP 代码。将标题文本转换为友好的 url 格式并存储到博客表中。

    <?php
    include('db.php');
    function string_limit_words($string, $word_limit)
    {
      $words = explode(' ', $string);
      return implode(' ', array_slice($words, 0, $word_limit));
    }
    
    if($_SERVER["REQUEST_METHOD"] == "POST")
    {
      $title = mysql_real_escape_string($_POST['title']);
      $body = mysql_real_escape_string($_POST['body']);
      $title = htmlentities($title);
      $body = htmlentities($body);
      $date = date("Y/m/d");
    
      //Title to friendly URL conversion
      $newtitle = string_limit_words($title, 6); // First 6 words
      $urltitle = preg_replace('/[^a-z0-9]/i', ' ', $newtitle);
      $newurltitle = str_replace(" ", "-", $newtitle);
      $url = $date . '/' . $newurltitle . '.html'; // Final URL
    
      //Inserting values into my_blog table
      mysql_query("insert into blog(title,body,url) values('$title','$body','$url')");
    }
    
    ?>
    <!--HTML Part-->
    <form method="post" action="">
      Title:
      <input type="text" name="title"/>
      Body:
      <textarea name="body"></textarea>
      <input type="submit" value=" Publish "/>
    </form>
    

    Article.php

    包含 HTML 和 PHP 代码。显示博客表中的内容。

    <?php
    include('db.php');
    if($_GET['url'])
    {
      $url  =mysql_real_escape_string($_GET['url']);
      $url = $url . '.html'; //Friendly URL
      $sql = mysql_query("select title,body from blog where url='$url'");
      $count = mysql_num_rows($sql);
      $row = mysql_fetch_array($sql);
      $title = $row['title'];
      $body = $row['body'];
    }
    else
    {
     echo '404 Page.';
    }
    ?>
    <!-- HTML Part -->
    <body>
      <?php
      if($count)
      {
        echo "<h1>$title</h1><div class='body'>$body</div>";
      }
      else
      {
        echo "<h1>404 Page.</h1>";
      }
      ?>
    </body>
    

    .htaccess

    URL 重写文件。将原始 URL 9lessons.info/article.php?url=test.html 重定向到 9lessons.info/test.html

    RewriteEngine On
    
    RewriteRule ^([a-zA-Z0-9-/]+).html$ article.php?url=$1
    RewriteRule ^([a-zA-Z0-9-/]+).html/$ article.php?url=$1
    

    【讨论】:

      【解决方案2】:

      当我查看您发布的 URL 示例时,我看到了两件事:

      • 它指向一个 PHP 脚本: /directory/download_interim_finder.php
      • 它有一个(看起来像)Base64 编码的参数,显然没有人可以阅读

      我猜你对下载脚本的输入是在它的参数字符串中编码的,你需要把它放在 URL 中,否则你无法识别你想要下载的文件。由于您希望 URL 具有语义,因此您必须将语义信息添加到 URL。

      例如,您可以制作如下网址:

      /download/documentation/productX/[[Base64encodedinputstring]]
      

      在您的 .htaccess 中,您需要以下规则:

      RewriteEngine On
      RewriteRule /download/.*/([^\/]+) /directory/download_interim_finder.php?it=$2
      

      如果您的主机不允许您使用 .htaccess,那么您就不能轻易地使用语义 url。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-03
        • 2014-07-14
        • 2023-04-03
        • 2016-04-13
        • 2015-07-07
        • 1970-01-01
        • 2014-05-19
        • 2012-04-26
        相关资源
        最近更新 更多