0

我在我的新 Web 应用程序中使用 Codeigniter,我在页面中有一个表单,它通过 post 将数据发送到服务器,该服务器将用户返回到我的网站,但参数通过 get 带有丑陋的链接,例如 example.com/ id=12&code=Xxxx

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

谢谢

4

2 回答 2

4

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

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

例如:

$firstPart = $_GET['myKey'];
$secondPart = $_GET['mySecondKey'];
header('Location: ' . $requestURL . '/' . $firstPart . '/' . $secondPart);
于 2012-08-28T18:46:09.270 回答
2

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

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

middleman将文件夹添加到文件.htaccess不应通过 index.php 路由的项目列表中

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

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

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

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

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

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

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

于 2012-08-28T22:25:08.347 回答