我搜索了网络,现在尝试了大多数事情,最近几个小时没有结果。

我用了CodeIgniter,我有一个。我有一些规则的htaccess文件。

我想强制SSL连接并从URL中删除index.php。

这是我的.htaccess

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /

    # Force SSL
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

    #remove ugly index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin
    ErrorDocument 404 /index.php
</IfModule>
Options All -Indexes


问题是它不起作用。我在www.lotusmodellen.se上安装了证书,所有流量都必须流向那里。不对Lotusmodellen.se

请尝试进入这样的http://www.lotusmodellen.sehttp://lotusmodellen.se

无论您编写什么内容(带或不带https),都应访问www.lotusmodellen.se

但这似乎是问题,重定向错误之类的。因为它不起作用。

有没有人有办法解决吗?

最佳答案

您好,只需将您的base_url替换为config.php文件,即可检查来自https或http的请求,并根据该请求设置base_url。

if(isset($_SERVER['HTTP_HOST']))
{
    $config['base_url'] = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ? 'https' : 'http';
    $config['base_url'] .= '://'. $_SERVER['HTTP_HOST'];
    $config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
}

else
{
    $config['base_url'] = 'http://localhost/';
}

关于.htaccess - 在codeigniter中强制使用SSL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11483312/

10-13 05:27