我有一个Codeigniter应用程序,它是在普通的http上开发和测试的。现在,Apache服务器的配置方式使所有页面都存储在启用了SSL的单个文件夹中。 SSL证书已到位。当我使用“https://www”浏览网站时,它会重定向到“http://www”。
注意:我不需要使用SSL加载特定页面。我只需要将所有页面显示为HTTPS 。
我尝试过Stack Overflow上建议的解决方案,包括:
$config['base_url'] = "https://www.yoursite.com/"
; 当我同时尝试上述方法时,Firefox发出以下错误:
页面未正确重定向。 Firefox检测到服务器正在以永远无法完成的方式重定向此地址的请求。
许多Stack Overflow贡献者建议这只应由Apache处理。这对我来说很有意义,但是通过.htaccess强制HTTPS会产生同样的错误。
有没有一个简单的方法可以在没有钩子和SSL助手等的情况下做到这一点?
答案 0 :(得分:0)
这个答案有点(阅读:很多),但你可以使用我{5}前所做的hook,它会重定向到你的HTTPS网站并设置一些标题。
我将它与此.htaccess
文件一起使用:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?/$1 [L]
答案 1 :(得分:0)
第1步
设置$config['base_url'] = "https://www.yoursite.com/";
第2步
使用和编辑此.htaccess文件。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
答案 2 :(得分:0)
很容易,
转到applicaton / config.php并插入以下代码:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$base = "https://".$_SERVER['HTTP_HOST']; // HERE THE CORRECT CODE
$base .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
$config['base_url'] = $base;
请参阅图片上的第19行。
10k
答案 3 :(得分:0)
步骤1:application / hooks / ssl.php
function force_ssl()
{
$CI =& get_instance();
$CI->config->config['base_url'] = str_replace('http://', 'https://', $CI->config->config['base_url']);
if ($_SERVER['SERVER_PORT'] != 443) redirect($CI->uri->uri_string());
}
第2步:application / configs / hooks.php
$hook['post_controller_constructor'][] = array(
'function' => 'force_ssl',
'filename' => 'ssl.php',
'filepath' => 'hooks'
);
第3步:application / config / config.php
$config['enable_hooks'] = TRUE;
htaccess的更改:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]
要在您的Apache服务器上安装的“ mod_rewrite”模块
最终:重新启动Apache服务器。
答案 4 :(得分:0)
CI_app\application\config\config.php
2
.htaccess
$base_url = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$base_url .= "://". @$_SERVER['HTTP_HOST'];
$base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
$config['base_url'] = $base_url;