php - 从 PHP 中的 GET 请求创建可索引的、人类可读的 URL
问题描述
我有一个数据库,我的目标是使用它来生成可以被搜索引擎索引的页面以及美观且易于阅读的 URL。
我所拥有的是与此类似的东西。
- 来自数据库的数据数组,我使用 foreach 循环生成标签。
- href 重定向并将人员姓名放入 GET 参数中。
- 然后使用 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 页面?
解决方案
将空格替换为_
:
echo('<a href="indexable.php?person='.str_replace(" ", "_", $i).'">'.$i.'</a>');
要website.com/Barack_Obama
改为使用,website.com/?person=Barack_Obama
您至少有两个选择:
- 使用
.htaccess
RewriteRule ^([^/]+)$ /indexable.php?person=$1 [NC]
parse_url
在php中使用函数
在此处检查parse_url
功能文档:
此函数解析 URL 并返回一个关联数组,其中包含存在的 URL 的任何各种组件。数组元素的值未经过 URL 解码。
推荐阅读
- npm - 命令`yarn global add serve`一直不安装`serve`?
- reactjs - 为什么我来自 api 的数据仍未定义?
- html - XPath 连接两个孩子
- c# - 如何使用 Dapper 和 Change Tracking 来保存更改的列表?
- r - R,have_labelled:获取标签作为值
- autodesk-forge - 使用 AutoDesk Forge 合并多个 3D 文件
- c++ - 调试错误!...断言:“!上下文||(QOpenGLContest::currentContext()
- python - Python 中的 Hangman:尝试沿空白显示猜测的字母时引发类型错误
- vba - 如何计算 InStr() 方法找到的记录?
- c# - 将 AutoMapper 与 DataTable 和 DataRows 一起使用时出错