将GET链接转换为漂亮的链接


Convert GET links to nice links

我在我的新web应用程序中使用Codeigner,我在页面中有一个表单,它通过post将数据发送到服务器,然后服务器将用户返回到我的网站,但参数通过get和丑陋的链接(如example.com/id=12&代码=xxx

如果可能的话,我想做的是如何将那些丑陋的链接转换为友好的链接(example.com/12/Xxxx)

感谢

您不能将GET表单直接转换为漂亮的URL。它们将自动变为?key=val格式。

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

例如:

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

获取参数基本上是任何Web API的标准参数,因此您可能会发现您最终会大量使用它们,因此每个API的破解修复都会创建一个中间人。

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

middleman文件夹添加到.htaccess文件中的项目列表中,这些项目应而不是通过index.php 路由

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

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

创建中间人的原因是Code Igniter删除了get数组,因此在您处理请求并将其格式化为有意义的内容之前,它会被删除(如果您试图在Code Ignitor内部执行此操作),因此我们必须在Code Ignater的范围之外执行转换。

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

<?php
    $from = $_GET['ip'];
    $time = $_GET['time'];
    $post = $_GET['id'];
    header('location: ../mysite/pingback/'.$from.'/'.$post.'/'.$time);
?>

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