Codeigniter删除https上的index.php

时间:2016-02-07 22:05:07

标签: .htaccess codeigniter ssl

我使用godaddy作为我的服务器提供商,我购买了SSL证书。在我的CodeIgniter项目中,它让我对index.php感到头痛。我无法从我的网址中删除index.php。 我研究了周围并尝试了我发现的所有东西,但没有什么对我有用,所以不要把它视为双重请。

如果:https://example.com/index.php/home - 完美无缺 如果:https://example.com/home
我收到404错误。未找到在此服务器上找不到请求的文档。

到目前为止,我已经在我的htaccess文件中停止了这些条件:

RewriteEngine on

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (sale|success|cancel) [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !(static|sale|success|cancel) [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond $1 !^(index\.php|resources|robots\.txt|static) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

任何建议都会有所帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

从$ config ['base_url']中删除index.php。

然后使用此链接从url

中删除index.php

http://addictors.in/remove-index-php-from-url-in-codeigniter/

然后重启服务器

答案 1 :(得分:0)

我的最终结果:

帮助者中的

//Force SSL injection
if(!function_exists('force_ssl'))
{
    function force_ssl() {
        if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") {
            $url = "https://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
            redirect($url);
            exit;
        }
    }
}

在控制器中调用方法:force_ssl();

.htaccess中,index.php为:

DirectoryIndex index.php

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|robots\.txt)

RewriteRule ^(.*)$ index.php?/$1 [L]