gpt4 book ai didi

php - 将带有文件夹的 php url 映射到查询字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:48:11 24 4
gpt4 key购买 nike

我想使用 php 将 SEO 友好的 URL 映射到带有查询字符串的实际不友好的 URL,但我想使用有意义的文件夹名称。我想要以下映射

sport/football/england/premier-league/arsenal -> /team.php?id=arsenal
sport/football/spain/la-liga/barceona -> /team.php?id=barceona

现在显然我可以创建一个忽略文件夹的重写规则,但我不希望它与无效组合一起使用。所以这应该发生。

sport/football/spain/laliga/arsenal -> 404

是否有公认的技术可以做到这一点?对于 .htaccess 或 web.config 中的每个可能的 URL,我是否只需要数千个重写规则?或者我可以在着陆页数据库中创建一个映射到实际 URL 的表吗?

最佳答案

如果您想使用 php 脚本来执行此操作,我会使用正则表达式。

您必须有一个数组将球队与联赛等相关联。如果您想将所有父目录(例如球队与联赛、联赛与国家/地区与运动等)关联起来,则数组和正则表达式会复杂得多。

我可以写一个简单的例子:

<?php

$key = explode('/', $_SERVER['REQUEST_URI'])[4];
$redir = explode('/', $_SERVER['REQUEST_URI'])[5];

$array = array('laliga' => array('a', 'b', 'c', 'd'), 'primera' => array('e', 'f', 'g', 'h'));

$reg = '/('.$key.')/(';
for($i=0; $i<sizeof($array[$key])-1; $i++)
{
if($i != sizeof($array[$key])-1)
{
$reg .= $array[$key][$i].'|';
} else{
$reg = $reg.''.$array[$key][$i];
}
}

$reg .= ')/';

if(preg_match($reg, $_SERVER['REQUEST_URI']))
{
header('Location: team.php?id='.$redir);
} else {
header('Location: 404.html');
}
?>

如有错误请指正。

祝你好运

关于php - 将带有文件夹的 php url 映射到查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48239526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com