【问题标题】:CodeIgniter Enabling Query StringsCodeIgniter 启用查询字符串
【发布时间】:2011-08-09 10:50:20
【问题描述】:

我得到了这个网址:

http://twitternieuws.com/class/function/ID?oauth_token=xxxxx&oauth_verifier=xxxxx

而且我不断收到诸如“找不到您请求的页面”或“您提交的 URI 包含不允许的字符”之类的错误。我尝试使用不同的设置更改以下选项:

$config['permitted_uri_chars'];
$config['enable_query_strings'];
$config['uri_protocol'];

有什么我可以做的吗?我正在使用 codeigniter 1.7.2

【问题讨论】:

  • permitted_uri_chars 是我认为的方法。试着一点一点地把部分网址放进去,看看它在抱怨什么
  • 是&和=!在 URL 中使用 & 或 = 时,它不起作用并给我错误“您提交的 URI 包含不允许的字符”。但是,如果我设置了 allowed_uri_chars ,则会收到错误“找不到您请求的页面”
  • 您不能同时使用搜索引擎友好的基于分段的 URL 和基于标准查询字符串的 URL
  • @mahadeb:你有参考吗?你说的对我来说毫无意义,事实上我现在正在这样做。
  • 我将 $_GET 广泛用于与 SEO 无关的目的,在甚至没有被索引的页面上,任何完全反对基于任何与 SEO 相关的查询字符串的论点都是没有根据。

标签: php codeigniter query-string


【解决方案1】:

当不能升级到 CodeIgniter 2 时,您可以像这样重新创建 $_GET 变量(将其添加到需要查询字符串的每个控制器):

parse_str($_SERVER['QUERY_STRING'],$_GET);

并在您的 config.php 文件中进行更改:

// $config['uri_protocol'] = "AUTO"; // 从这里改变

$config['uri_protocol'] = "PATH_INFO"; // 到这里

【讨论】:

    【解决方案2】:

    1.7.2 中的查询字符串是个笑话,它使用?c=controller&m=method 基本上将您的漂亮网址更改为伪 $_GET 参数。我真的不明白为什么有人会按照预期的方式使用它,它非常具有误导性,并且与普通查询字符串相同。

    高度建议您查看最新版本的 Codeigniter,它们不会取消设置 $_GET 数组(现在可以使用普通查询字符串)。在旧版本的核心文件之一中,它显示CI does not use $_GET so we are going to unset() the global $_GET array。那么,如果 需要使用 $GET 怎么办?我一直认为这很疯狂,人们一直在为真正的 $_GET 支持永远尖叫。

    说真的,是时候升级了:

    最新:https://bitbucket.org/ellislab/codeigniter-reactor/

    稳定:http://codeigniter.com/

    【讨论】:

    • 我害怕那个!我正在测试升级到 2.0.2!
    • @iSenne:请务必阅读更改日志和升级说明,您需要对现有应用程序进行一些重要(但简单)的更改。最重要的是,包括 Model 和 Controller 在内的所有核心类现在都以 CI_ 为前缀
    • 我不敢升级,不过几乎一切正常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 2019-05-15
    • 2013-12-27
    • 1970-01-01
    • 2015-03-20
    相关资源
    最近更新 更多