【问题标题】:How to disable custom URLs in CodeIgniter?如何在 CodeIgniter 中禁用自定义 URL?
【发布时间】:2012-04-18 22:14:58
【问题描述】:

我讨厌它所在的 codeigniter 自定义网址:domain.com/controller/action/id

我怎样才能像普通网站一样拥有它:domain.com/controller.php

有人知道如何禁用它吗?

(使用最新的codeigniter)

【问题讨论】:

  • 你这样做的目的是什么?
  • 我正在尝试解析我的 php _GET 查询,但 php 函数无法正确读取它们。我也有很多解析 url 的函数,但它们不适用于自定义 codeigniter url。我只是想拥有一个传统的 url 结构。
  • 也许 MVC 框架不是正确的选择?看起来它可能会为你创造很多额外的工作。您可以查看custom routing 并启用GET 参数(使用CI可能的)。
  • 我真的很喜欢 MVC 框架,但我只是觉得他们的 url 是一团糟。有些人不关心 SEO,比如我。是的,我看到了路由页面,并没有真正的帮助。我只是想将控制器转换为 php 页面,如下所示:domain.com/main.php (controller is main)
  • 我不会认为它们“搞砸了”,但它们可能与您习惯的不同。老实说,如果您打算使用 CodeIgniter,我建议您接受它们,而不是违背惯例。只是我的 0.02

标签: php codeigniter routing codeigniter-2


【解决方案1】:

如果你讨厌它,你可能还没有准备好跳入像 codeigniter 这样的框架。 Rest like urls 是一个很大的特性,所以 url 有一些实际意义,而不仅仅是一个指针。如果你习惯了example.com/person.php?id=123&action=seeprofile,而不是example.com./person/profile/123,那也没关系,但你怎么看不到它的美呢?你应该看看一些专家解释为什么你应该这样做,以及为什么其他人都这样做。

编辑: 您应该查看文档的此页面,以便了解这个强大功能的巧妙之处。

http://codeigniter.com/user_guide/general/controllers.html#passinguri http://codeigniter.com/user_guide/general/routing.html http://codeigniter.com/user_guide/libraries/uri.html

【讨论】:

  • +1 表示“如果你讨厌它,你可能还没准备好跳入像 codeigniter 这样的框架。”
  • 你能举个例子说明我可以如何使用:domain.com/file.php?id=34&action=now&mode=delete 吗? (假设文件是​​一个类)
  • @user962449:您可以通过多种方式进行设置,但惯例是这样的domain.com/controller_name/method_name/argument_1/argument_2/etc。请记住,URI ClassRouting capabilities 有助于使其成为一种非常灵活的方法。
  • 你怎么知道什么去了哪里?比如,什么论据是什么。
  • 添加了一些参考资料,可以帮助您了解正在发生的事情
【解决方案2】:

来自 CI 文档:http://codeigniter.com/user_guide/general/urls.html

添加网址后缀

在您的 config/config.php 文件中,您可以指定将添加到 CodeIgniter 生成的所有 URL 的后缀。例如,如果一个 URL 是这样的:

example.com/index.php/products/view/shoes 您可以选择添加后缀,例如 .html,使页面看起来属于某种类型:

example.com/index.php/products/view/shoes.html

【讨论】:

  • 那行不通,因为如果我想拥有 domain.com/main.php 我将不得不使用 domain.com/index.php?c=main 来代替。
  • 抱歉,您是对的,如果您将 .php 文件从应用程序中取出,那么您可以将其作为 yoursite.com/outside.php 提供。如果你想在 outside.php 中调用你的应用程序的数据库,你只需要执行典型的 PHP 代码,例如,mysql_connect(servername,username,password); 来连接它。
  • 你的意思是你仍然想“使用”你的应用程序还是仅仅使用 CI 语法?如果是后者,那么我回应 ismaelga 的回答。如果是前者,那么只需使用常规 php 连接到您的应用程序。
  • 我想使用 CI 语法和框架,而不是 url 结构来访问类和方法。
  • 我对 CI 有点陌生,但是删除“.php”似乎是一个真正的 CI 爱好者会知道的问题,因为它是 CI 的一个基本特征。也许在codeigniter论坛上提出你的问题?有时我在那里得到了一些非常复杂的帮助。必须有一个黑客攻击。
【解决方案3】:

我不明白你想要达到什么目的。您可能会说您“讨厌自定义 url”,但这实际上是框架 .. 工作原理的基本部分。

如果你真的不喜欢它们,那么你需要调查routing,以及它在 codeigniter 上下文中是如何工作的。 not 使用控制器方法 id 模式有一个非常非常好的论据,我也支持它,但事实并非如此。国际化,仅此而已。

无论如何,在域名中添加 file.php 或 my-pro-script.php 对我们这些网站的用户来说是完全无关紧要的,他们根本不在乎 .php 扩展名。您想要这样做的理由是什么?

【讨论】:

  • 我的应用程序将包含大量报告和搜索。那就是我需要尽可能基本的网址。使用自定义结构 imo 的工作更多。 CI 假设减少编码时间而不是增加它......
  • 另外,你知道我在哪里可以找到更多关于路由的例子吗? (除了您提供的链接)。
  • 好的,我想我明白你想要实现的目标——这里的路由绝对是答案。我正在研究一种类似的实现可翻译 URL 的想法,一个非常好的解决方案是这个:darrenonthe.net/2011/05/06/… - 基本上,您通过某种 DB 后端定义自定义路由,CI 将使用它找到的任何路由定义而不是您在问题中提到的 URL 模式。看一看。但是 - 您确实需要更多地考虑“简单”以及它对您的网站意味着什么。
【解决方案4】:

config.php文件中有enable_query_strings选项, 可能这就是你想要的... 您可以通过将此选项设置为 TRUE 来启用基于标准查询字符串的 URL。

【讨论】:

    猜你喜欢
    • 2017-07-27
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 2013-09-17
    • 2014-03-05
    • 1970-01-01
    相关资源
    最近更新 更多