【问题标题】:Convert GET links to nice links将 GET 链接转换为漂亮的链接
【发布时间】:2012-08-23 07:53:47
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: php api codeigniter get-request


    【解决方案1】:

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

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

    例如:

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

    【讨论】:

      【解决方案2】:

      Get 参数对于任何Web API 来说基本上都是标准的,因此您可能会发现最终会大量使用它们,而不是 hack 修复 为每个 API 创建一个 @987654322 @。

      在与您的 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 Igniter 范围之外执行转换.

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-07-23
        • 1970-01-01
        • 2015-11-08
        • 1970-01-01
        • 2012-11-01
        • 2014-09-25
        • 2011-01-29
        • 2010-12-05
        • 1970-01-01
        相关资源
        最近更新 更多