以下是我项目中的base_url of
config.php 。
$config['base_url'] = 'https://www.mywebsite.com/';
但我的网站总是转到http://www.mywebsite.com
,除非用户在浏览器网址中隐式写入https。
有什么问题?
为什么codeigniter会转到config.php中定义的url?
答案 0 :(得分:0)
HTTPS: - 全名是(超文本传输协议安全)。它是一个扩展的或你可以说安全版本的HTTP(超文本传输协议)。如果您在服务器上启用了https,则会在浏览器的地址栏中显示锁定图标。 对于数据加密,它使用SSL(安全套接字层)证书安装在您的服务器上。大多数使用https来安全地使用ssl传输数据。 因此大多数网站需要ssl或https网址。我们可以使用钩子轻松管理在codeigniter中重定向到https url。它是CI的另一个优点。我们需要创建一些代码行来获取ssl url或重定向到codeigniter中的https url。默认的codeigniter没有这种类型的功能,所以我们需要强制重定向到ssl url。下面我们将看到如何使用sign重定向和codeigniter。
1.Config更改: - application/config/config.php
并启用或设置挂钩为true。
$config['enable_hooks'] = TRUE;
2.在application/config/hooks.php
中创建名为hooks.php的新文件,并在hooks.php
中添加以下代码。
$hook['post_controller_constructor'][] = array(
'function' => 'redirect_ssl',
'filename' => 'ssl.php',
'filepath' => 'hooks'
);
3.现在在应用程序目录下创建一个名为hooks
的新目录,然后在ssl.php
中创建名为application/hooks/ssl.php
的新文件
并将以下代码添加到ssl.php
。
function redirect_ssl() {
$CI =& get_instance();
$class = $CI->router->fetch_class();
$exclude = array('client'); // add more controller name to exclude ssl.
if(!in_array($class,$exclude)) {
// redirecting to ssl.
$CI->config->config['base_url'] = str_replace('http://', 'https://', $CI->config->config['base_url']);
if ($_SERVER['SERVER_PORT'] != 443) redirect($CI->uri->uri_string());
}
else {
// redirecting with no ssl.
$CI->config->config['base_url'] = str_replace('https://', 'http://', $CI->config->config['base_url']);
if ($_SERVER['SERVER_PORT'] == 443) redirect($CI->uri->uri_string());
}
}
现在检查您的网站,您将在网址中获得https。使用hooks
在codeigniter中重定向到https网址是一种不错的方法,而不是htaccess
。
答案 1 :(得分:0)
如果根目录中有var navButtons = document.getElementsByClassName("navButtons");
for (var i=0; i<navButtons.length; i++){
navButtons[i].addEventListener("mouseover", mouseOver);
navButtons[i].addEventListener("mouseout", mouseOut);
}
function mouseOver(event) {
event.target.parentNode.style.color = "red";
}
function mouseOut(event) {
event.target.parentNode.style.color = "black";
}
文件用于允许“漂亮网址”,则可以添加一些强制重定向“https”协议的命令。
行后
<nav>
<div class="navButtons">
<div id="about">about</div>
<div id="portfolio">portfolio</div>
<div id="contact">contact</div>
</div>
</nav>
在这些行
.htaccess
其余命令保持不变。
保留问题中显示的RewriteEngine on
设置。无需更改其他代码。
答案 2 :(得分:0)
你需要使用HOOKS,因为它比.htaccess更简单。 首先在***中更改基本网址
应用/配置/ config.php中
$config['base_url'] = 'https://www.mywebsite.com';
内部
应用/配置/ hooks.php
将此代码编写为:
$hook['post_controller_constructor'][] = array(
'function' => 'redirect_ssl',
'filename' => 'ssl.php',
'filepath' => 'hooks'
);
现在在
中将文件名设为 ssl.php应用/钩/
并粘贴以下代码
<?php
function redirect_ssl() {
$CI =& get_instance();
$class = $CI->router->fetch_class();
$exclude = array(''); // add more controller name to exclude ssl.
if(!in_array($class,$exclude)) {
// redirecting to ssl.
$CI->config->config['base_url'] = str_replace('http://', 'https://', $CI->config->config['base_url']);
if ($_SERVER['SERVER_PORT'] != 443) redirect($CI->uri->uri_string());
}
else {
// redirecting with no ssl.
$CI->config->config['base_url'] = str_replace('https://', 'http://', $CI->config->config['base_url']);
if ($_SERVER['SERVER_PORT'] == 443) redirect($CI->uri->uri_string());
}
}
?>
现在它应该像魅力一样工作,因为我使用了相同的方法并找到了最简单的方法