CodeIgniter - 与同一站点上的其他CMS的多个条目路径

时间:2012-11-14 13:37:44

标签: wordpress codeigniter url mod-rewrite

这对每个人来说都是一个奇怪的问题。我有一种情况,现有网站上运行wordpress作为网站的主要CMS,还有一些额外的代码,由于URL结构等原因无法在WP中实现,所以我们想把CI放在同一主持人。

但是,该网站上的CI需要两个潜在的入口点 - 让我们称之为/ userside和/ adminside

我希望两者共享相同的应用程序和系统文件夹,这些文件夹都位于相同的可访问文件夹空间中。

我/用户很容易与WP共存。

这是.htaccess文件

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^/userside [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /userside/index.php [L]

RewriteRule ^/adminside [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /adminside/index.php [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

我的文件夹布局如下

FTP ROOT/
    ci/ <- codeigniter root
      application/
      system/
    http/
      index.php <- WP index.php
      adminside/
        index.php <- CI index.php
      userside/
        index.php <- CI index.php
      ... wp-content etc

我已将用户的文件复制到adminside并尝试了符号链接,但都无法正常工作。

在CI的application / config中,我将base_url修改为:

list($_trash, $_base, $rest) = explode('/', $_SERVER['REQUEST_URI'], 3);
$config['base_url']     = "http://".$_SERVER['HTTP_HOST']."/".$_base;

这意味着它会自动将URI的第一段作为应用程序库,我调试了这段代码并正确设置它。

现在问题是,当我访问/ userside / somecontroller时,它可以工作,但是,当我访问/ adminside / somecontroller时它没有。我得到了404页。

我可以通过访问/ adminside来访问默认控制器的index()函数 - 但是当我指定控制器和方法时它不起作用。

例如:

http://www.mysite.com/userside/mycontroller/mymethod&lt; - 有效 http://www.mysite.com/userside/mycontroller/mymethod&lt; - 不起作用 - 404显示

/ userside首先设置,除了application / config / config.php之外,我看不到将CI与/ userside联系起来的任何地方

已检查权限且相同,所有者相同。

任何人都知道为什么这不起作用?我不希望将网站拆分为子域,因为我们有特定的原因,因为它与/ userside一起工作,只有一些简单的东西让我不能使/ adminside工作。

2 个答案:

答案 0 :(得分:1)

你需要RewriteRule摆脱index.php 追加方法:

<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^/userside(.*)$   /userside/index.php$1 [L]
    RewriteRule ^/adminside(.*)$  /adminside/index.php$1 [L]
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

答案 1 :(得分:0)

这比我想象的要复杂一点。

您只需将CI的.htaccess放入要运行CI的子文件夹中,然后设置相应的站点URL变量即可。

我确实找到了一个文档,该文档展示了如何通过在CI的index.php中从WP端的根目录加载wp-load.php来从CI访问所有WP的库。

希望这有助于其他人。