将GET链接转换为不错的链接

时间:2012-08-28 18:43:21

标签: php api codeigniter get-request

我在我的新网络应用程序中使用Codeigniter,并且我在页面中有一个表单,通过post将数据发送到服务器,该服务器将用户返回到我的网站但是通过参数获取丑陋的链接,例如示例的.com / ID = 12&安培;代码= XXXX

我想做什么,如果有可能而且我一直在寻找,我找不到如何将这些丑陋的链接转换为友好的友情链接(example.com/12/Xxxx)

由于

2 个答案:

答案 0 :(得分:4)

您无法直接将GET表单转换为精美的网址。它们将自动变为?key=val格式。

您最好的选择是使用重定向标头将GET转换为漂亮的网址。

例如:

$firstPart = $_GET['myKey'];
$secondPart = $_GET['mySecondKey'];
header('Location: ' . $requestURL . '/' . $firstPart . '/' . $secondPart);

答案 1 :(得分:2)

获取参数基本上是任何Web API的标准参数,因此您可能会发现最终会使用它们而不是 hack fixes 为每个API创建一个middle man

创建一个与index.php相同级别的新文件夹(通常是您的站点根目录)。将此文件夹称为middleman

middleman文件夹添加到.htaccess文件中应通过index.php

路由的项目列表中

现在,对于您使用的每个API,您都可以在middleman文件夹中创建一个新的.php文件,该文件将所有请求转换为您的网站可以理解的请求。

然后,您将外部API指向http://yoursite.com/middleman/api_name.php

创建中间人的原因是Code Igniter obliterates the get array所以在处理请求之前它会被删除,如果你尝试在Code Igniter中执行它们就将它们格式化为有意义的东西,所以我们必须在Code之外执行转换点火器的范围。

示例文件可能如下所示:
mysite.pingback.php

<?php
    $from = $_GET['ip'];
    $time = $_GET['time'];
    $post = $_GET['id'];

    header('location: ../mysite/pingback/'.$from.'/'.$post.'/'.$time);
?>

非常简单的文件。但这也意味着当对外部API进行更改时,它不会影响Code Igniter应用程序的工作方式,因为您只需更改中间人即可。