【问题标题】:codeigniter only pages to an existing websitecodeigniter 仅页面到现有网站
【发布时间】:2013-10-14 16:15:55
【问题描述】:

我的网站结构有点像下面

css/
lib/
js/
index.php
profile.php
products.php
checkout.php
orders.php
invoice.php

我已经在其中添加了一个 codeigniter 文件夹...

codeigniter/application/
codeigniter/application/controllers/
codeigniter/application/controllers/mycontroller.php
and other files

我可以通过转到mywebsite.com/codeigniter/mycontroller 等来访问 CodeIgniter 的东西。

但是,我想从 URL 中删除 /codeigniter/ 部分。所以我想知道是否可以创建一个特定于 CodeIgniter 的文件的白名单?例如,如果 URL 是 mywebsite.com/mycontroller,那么它会执行 CI 工作,否则它会查找纯 PHP 代码文件。我只有几个 CI 控制器并加载其他非 CI 文件。

有什么想法吗?

【问题讨论】:

  • 一切都通过index.php 文件完成。请参考手册:ellislab.com/codeigniter/user-guide/general/urls.html
  • 是的,我知道。我需要在 index.php 中进行哪些更改才能使上述设置正常工作?
  • 或者,您也可以迁移现有站点以使用 codeigniter。如果您要为网站的一部分使用框架,则可能更容易将其用于整个网站。至少保持它是一致的
  • 是的,我很想迁移,但工作量很大。如果我能完成上述工作,那么我会根据需要逐页迁移(并且当我有时间时),如果你明白我的意思的话。

标签: php codeigniter


【解决方案1】:

我认为您可以使用.htaccess 重写不包含.phpcsslibjs 的URL。比如:

RewriteCond %{REQUEST_URI} !^(\.php|css|js|lib)$
RewriteRule (.*) codeigniter/index.php/$1

所以:

http://example.com/css/test.css 

留下

http://example.com/css/test.css

(对 css|lib|js 的所有请求也是如此。您可以在此处附加更多内容以便重写以忽略)

http://example.com/controller/method 

变成

http://example.com/codeigniter/index.php/controller/method

您可以在这里进行测试:http://htaccess.madewithlove.be/

更多关于重写:http://httpd.apache.org/docs/current/mod/mod_rewrite.html

【讨论】:

    【解决方案2】:

    短期解决方案

    您可以先将index.php 文件转换为控制器,然后随意命名:

    <?php
    class New_default_controller extends CI_Controller {
        public function index()
        {
            // home page stuff here
        }
    }
    

    更改route.php 文件并设置您的默认控制器,以便只需访问您的站点即可触发正确的控制器:

    $route['default_controller'] = 'new_default_controller';
    

    应用删除index.php 文件的说明

    现在对 www.mysite.com/profile.php 的调用将访问您根目录下的 profile.php,对 www.mysite.com/new_future_page 的调用将调用您的 new_future_page 控制器。

    如果其中有任何令人困惑或遇到困难,请告诉我。

    最佳解决方案

    我想在上面发表评论,但这不可能显示为评论。

    您必须将 PHP 文件放入 controllers 文件夹中,如下所示:

    codeigniter/application/controllers/profile.php
    codeigniter/application/controllers/products.php
    codeigniter/application/controllers/checkout.php
    codeigniter/application/controllers/orders.php
    codeigniter/application/controllers/invoice.php
    

    请在继续之前完成并执行Tutorial。具体来说,Static Pages 部分将帮助您实现目标。

    您必须转换您当前的 PHP 文件以遵循 CodeIgniter 的流程

    【讨论】:

    • "您必须转换当前的 PHP 文件以遵循 CodeIgniter 的流程" .... 这正是我要避免的,即我不必将所有文件转换为文件比上面列出的要多得多。掩护要花我 2-3 周的时间,我不能承诺。
    • 是的,我现在需要短期解决方案,所以让我试试上面的方法。
    • 对最初的回答感到抱歉。我不知道有比你列出的多得多的页面。我一直非常喜欢 CodeIgniter,所以祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多