【发布时间】:2012-11-03 00:16:15
【问题描述】:
这是一个对每个人来说都很奇怪的问题。我有一种情况,现有网站上运行 wordpress 作为网站的主要 CMS,由于 URL 结构等原因,有一些额外的代码无法在 WP 中实现,所以我们想将 CI 放在同一主机。
但是,该站点上的 CI 需要两个潜在的入口点 - 我们将它们称为 /userside 和 /adminside
我希望两者共享相同的应用程序和系统文件夹,它们都在同一个可访问的文件夹空间中。
我已经很容易让 /userside 与 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
我已将用户端的文件复制到管理端并尝试了符号链接,但都不起作用。
在 CI 的应用程序/配置中,我将 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 http://www.mysite.com/userside/mycontroller/mymethod
/userside 是首先设置的,除了 application/config/config.php 之外,我看不到任何将 CI 与 /userside 联系起来的地方
权限已经过检查并且是相同的,所有者是相同的。
有人知道为什么这不起作用吗?我不想将站点拆分为子域,因为我们有特定的原因,并且它与 /userside 一起工作,只有一些简单的事情让我无法让 /adminside 工作。
【问题讨论】:
标签: wordpress codeigniter url mod-rewrite