这是每个人的一个奇怪的问题。我有一种情况,现有网站上运行 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 <- 不起作用 - 显示 404
/userside 是首先设置的,除了 application/config/config.php 之外,我看不到任何将 CI 与 /userside 联系起来的地方
权限已经过检查并且是相同的,所有者是相同的。
任何人都知道为什么这不起作用?我不想将站点拆分为子域,因为我们有特定的原因,并且由于它与 /userside 一起工作,所以只有一些简单的事情让我无法让 /adminside 工作。