【问题标题】:yii 1.0 https in getbaseurl not working on aws load balancergetbaseurl 中的 yii 1.0 https 在 aws 负载均衡器上不起作用
【发布时间】:2016-10-14 19:15:14
【问题描述】:

我正在尝试将我的网站移动到所有网址的 https。我正在使用带有负载均衡器的 aws 服务器实例。我已经设法通过 .htaccess 在 http 上将网站重定向到 https(如下所示),但是无论我使用过Yii::app()->getBaseUrl(true).,它都会返回带有 http 但不是 https 的网址。

谁能帮我解决这个问题。我希望所有 URL 都是 HTTPS。

我试图查看基类,发现chttprequest 类中有一个函数可以检查连接是否安全,但这个函数似乎不起作用。请帮忙。

public function getIsSecureConnection()
{
    return isset($_SERVER['HTTPS']) 
           && (strcasecmp($_SERVER['HTTPS'],'on') === 0 || $_SERVER['HTTPS'] == 1) 
           || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) 
           && strcasecmp($_SERVER['HTTP_X_FORWARDED_PROTO'],'https') === 0;
}

.htaccess(这工作正常。)

RewriteEngine On

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

【问题讨论】:

    标签: .htaccess amazon-web-services redirect yii https


    【解决方案1】:

    您可以转到您的protected/config/main.php 文件来更改默认值。添加请求组件,并配置baseUrl属性。

    'components' => array(
            ...
            'request' => array(
                'baseUrl' => 'https://www.example.com',
            ),
        ),
    

    从现在开始,baseUrl 将变为 https。您无需更改 chttprequest 请求中的任何内容。

    【讨论】:

    • 非常感谢您的帮助,但现在如果在 main.php 中设置 baseUrl 如下example.com 然后在任何视图文件中调用它 Yii::app()->getBaseUrl(true),它会返回一个奇怪的 URL,如下所示:example.com/http://example.com/index.php 我检查了 CHttpRequest 类函数 getBaseUrl 它有以下代码 $this->getHostInfo() . $this->_baseUrl : $this->_baseUrl; hostinfo 正在返回第一部分,_baseUrl 正在返回第二部分。它没有按预期工作。
    猜你喜欢
    • 2017-01-07
    • 2015-01-13
    • 1970-01-01
    • 2015-05-22
    • 2022-07-23
    • 2018-03-23
    • 1970-01-01
    • 2016-09-06
    • 2021-12-18
    相关资源
    最近更新 更多