【问题标题】:How to use both URI segments and Query strings without enabling: enable_query_strings如何在不启用的情况下同时使用 URI 段和查询字符串:enable_query_strings
【发布时间】:2011-07-14 13:35:00
【问题描述】:

在 CodeIgniter 中,同时组合 URI 段和查询字符串确实很棘手。 几乎可以实现这一目标的传统方法之一是启用enable_query_strings

问题是这有一些奇怪的行为,它也会影响所有的 URL 助手。

例如,当使用:redirect('/home') 时,它会重定向到domain.com/?/home

据我所知,enable_query_strings 不适合与 URI 段一起使用。

那么如何扩展核心以启用开箱即用的 GET 和 URI?

附注我知道最好只使用 URI 段,但有时接受来自 adwords 之类的 GET 查询非常重要。

【问题讨论】:

  • 我就在你身边,有时你需要 $_GET。将它与 uri 段“混合”完全没有问题。示例:我希望人们能够链接到使用用户输入的搜索词的搜索结果。如果用户输入包含不在您的permitted_uri_chars 中的字符,您还能如何支持这一点?如何处理使用$_GET 的第三方响应?您有时需要它,我不知道为什么它一开始就被禁用了。

标签: php codeigniter


【解决方案1】:

最好的解决办法是这样的:

  • 确保您使用的是最新版本的 CI,目前为 2.0.2
  • 忘记误导性的enable_query_strings(这不是你想要的)
  • 打开你的配置文件并将allow_get_array设置为TRUE,这样你就可以使用$_GET
  • 使用uri_protocol 设置,直到找到适合您环境的设置,PATH_INFO 适合我。
  • 享受使用正确的查询字符串!

enable_query_strings 破坏了几乎所有使 Codeigniter 出色的功能,包括 all 处理 url 的辅助函数。只要 CI 存在,它就是一些实验性功能,与正常的查询字符串支持相混淆。

底线 - 只需升级(如果您还没有升级),不要尝试为它编写 hack。

【讨论】:

  • 我需要能够使用助手(这样我才能拥有domain.com/user/account/edit),但还需要使用查询字符串来访问控制器和方法(domain.com?d=user&c=account&m=edit)。将 enable_query_strings 设置为 FALSE 意味着我根本无法使用后者,尽管 allow_get_array 为 TRUE。有没有办法可以同时使用选项和 URL 助手? (补充一点,我知道当 enable_query_strings 设置为 FALSE 时仍然可以使用查询字符串,但它似乎重定向到 URI 版本,我不希望发生这种情况)
猜你喜欢
  • 1970-01-01
  • 2017-12-24
  • 1970-01-01
  • 2021-09-08
  • 2021-12-01
  • 1970-01-01
  • 2015-11-20
  • 2014-11-24
  • 2012-06-09
相关资源
最近更新 更多