Codeigniter始终在子域或子文件夹上加载默认控制器

时间:2014-02-04 00:10:30

标签: php .htaccess codeigniter

我知道这个问题有很多解决方案。但我已经尝试了很多不同的方法,而且没有帮助。 问题的解释:当我在子文件夹或子域中的主机Web服务器上设置我的CI项目时,它只加载默认控制器。在当地一切正常。

  • 我尝试将Uri协议从“AUTO”设置为“REQUEST_URI”,没有帮助
  • 我尝试了很多不同的htaccess解决方案,但没有帮助
  • 我尝试过老式的index.php网址,没有帮助
  • 我已尝试禁用所有路由,但没有帮助

    尝试编辑:

  • 我尝试过删除基本网址中的klanten,就像建议的那样。没有帮助(@tomexsans建议)

我的设置:

$config['uri_protocol'] = "REQUEST_URI";  
$config['index_page'] = '';
$config['base_url']= 'http://www.mywebsite.nl/klanten';

或子域:

$config['base_url']= 'http://klanten.mywebsite.nl/';

我的htaccess:

DirectoryIndex index.php
RewriteEngine on

RewriteCond $1 !^(index\.php|img|stylesheets|javascript)
RewriteCond $1 !^(index\.php|img|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 

我正在运行带有CI 2.1.2的php 5.3.15

欢迎任何想法!

2 个答案:

答案 0 :(得分:0)

您要加载默认控制器吗?您是否尝试过routes文件

上的设置
$route['default_controller'] = 'klanten';

答案 1 :(得分:0)

我做了一些我不想做的事情来修复它。 首先,是的,我尝试更新CI,但这没有做任何事情......

所以我对CI2.1.2的解决方案如下:

Core / URI.php:185

    $uri = $_SERVER['REQUEST_URI'];
    if (strpos($uri, $_SERVER['SCRIPT_NAME']) === 0)
    {
        if($_SERVER['REMOTE_ADDR'] == "127.0.0.1" || $_SERVER['REMOTE_ADDR'] == "::1")
        {
            $uri = substr($uri, strlen($_SERVER['SCRIPT_NAME']));
        }
        else
        {
            $uri = ltrim ($uri,'/');    
        }

当我将CI网站放在子域中时,这对我来说是一个可行的解决方案,当您将它放在子文件夹中时,其他应该是这样的:

$uri = ltrim ($uri,'/subfolder/');

我希望它可以帮助任何人,如果有更好的方法来实现这一点,请说出来。