首页 > 解决方案 > 从 PHP 中的 GET 请求创建可索引的、人类可读的 URL

问题描述

我有一个数据库,我的目标是使用它来生成可以被搜索引擎索引的页面以及美观且易于阅读的 URL。

我所拥有的是与此类似的东西。

  1. 来自数据库的数据数组,我使用 foreach 循环生成标签。
  2. href 重定向并将人员姓名放入 GET 参数中。
  3. 然后使用 GET 参数填充 h1 标记以及页面上的标题标记和其他元素。
<?php
    $indexable = array(
        "Barack Obama",
        "Donald Trump",
        "Bill Clinton"
    )
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?php echo($_GET['person'])?>s Page</title>
</head>
<body>
    <h1>Hello <?php echo($_GET['person'])?></h1>
    <?php
        foreach($indexable as $i)
        {
            echo('<a href="indexable.php?person='.$i.'">'.$i.'</a>');
            echo('<br>');
        }
    ?>
    
</body>
</html>

第一个问题
生成的 URL 如下所示:

website.com/?person=Barack%20Obama

我想要的是这样的

website.com/Barack_Obama

第二个问题
我对 SEO 完全陌生,所以如果我的问题没有意义或不清楚,请多多包涵。但是,我最终生成了哪些“页面”,在这种情况下,巴拉克奥巴马、唐纳德特朗普、比尔克林顿可以被谷歌索引,以便用户可以找到它们。这是可能的还是我必须为每人创建一个 HTML 页面?

标签: phphtml

解决方案


将空格替换为_

echo('<a href="indexable.php?person='.str_replace(" ", "_", $i).'">'.$i.'</a>');

website.com/Barack_Obama改为使用,website.com/?person=Barack_Obama您至少有两个选择:

  1. 使用.htaccess
RewriteRule ^([^/]+)$ /indexable.php?person=$1 [NC]
  1. parse_url在php中使用函数

在此处检查parse_url功能文档:

此函数解析 URL 并返回一个关联数组,其中包含存在的 URL 的任何各种组件。数组元素的值未经过 URL 解码。


推荐阅读