diff options
-rw-r--r-- | system/core/Config.php | 6 | ||||
-rw-r--r-- | tests/codeigniter/core/Config_test.php | 12 |
2 files changed, 13 insertions, 5 deletions
diff --git a/system/core/Config.php b/system/core/Config.php index f630d1709..ad0e5f981 100644 --- a/system/core/Config.php +++ b/system/core/Config.php @@ -78,9 +78,9 @@ class CI_Config { { if (isset($_SERVER['HTTP_HOST'])) { - $base_url = is_https() ? 'https' : 'http'; - $base_url .= '://'.$_SERVER['HTTP_HOST'] - .str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']); + $base_url = (is_https() ? 'https' : 'http') + .'://'.$_SERVER['HTTP_HOST'] + .substr($_SERVER['SCRIPT_NAME'], 0, -strlen(basename($_SERVER['SCRIPT_NAME']))); } else { diff --git a/tests/codeigniter/core/Config_test.php b/tests/codeigniter/core/Config_test.php index 6a0a7a35f..2c28a639c 100644 --- a/tests/codeigniter/core/Config_test.php +++ b/tests/codeigniter/core/Config_test.php @@ -81,7 +81,7 @@ class Config_test extends CI_TestCase { // Setup server vars for detection $host = 'test.com'; - $path = '/path/'; + $path = '/'; $script = 'base_test.php'; $_SERVER['HTTP_HOST'] = $host; $_SERVER['SCRIPT_NAME'] = $path.$script; @@ -89,7 +89,15 @@ class Config_test extends CI_TestCase { // Rerun constructor $this->config = new $cls; - // Test plain detected + // Test plain detected (root) + $this->assertEquals('http://'.$host.$path, $this->config->base_url()); + + // Rerun constructor + $path = '/path/'; + $_SERVER['SCRIPT_NAME'] = $path.$script; + $this->config = new $cls; + + // Test plain detected (subfolder) $this->assertEquals('http://'.$host.$path, $this->config->base_url()); // Rerun constructor |