【问题标题】:codeigniter, force ssl on a particular pagecodeigniter,在特定页面上强制使用 ssl
【发布时间】:2012-04-02 07:17:16
【问题描述】:

我很难尝试强制 https (ssl) 到 codeiginiter 框架上的特定页面。我尝试了很多方法,但都没有奏效。对我有用的唯一方法是将 $config['base_url'] 站点链接更改为以 https 而不是 http 开头。结果是所有链接都设置为 ssl(整个站点),这是没有意义的,因为我不需要在任何地方使用 SSL。我在登录页面中使用了一些 php 代码,但造成了一些麻烦,所以我放弃了。

我想知道这是否是一个好方法如何做到这一点,有什么想法吗?

谢谢,

【问题讨论】:

    标签: codeigniter ssl https


    【解决方案1】:

    您需要在.htaccess 上添加条件以使 SSL 端口仅适用于选定的 url。

    这里是例子,怎么做

    RewriteEngine on
    
    RewriteCond %{SERVER_PORT} 80 
    RewriteCond %{REQUEST_URI} controller/function
    RewriteRule ^(.*)$ https://www.yourdomain.com/controller/function[R=301,L]
    
    RewriteCond %{SERVER_PORT} 443 
    RewriteCond %{REQUEST_URI} controller/function
    RewriteRule ^(.*)$ https://www.yourdomain.com/controller/function[R=301,L]
    
    RewriteCond $1 !^(index\.php|images|robots\.txt)
    RewriteRule ^(.*)$ index.php/$1 [L] 
    

    P.S : 您的 base_url 必须在配置文件中设置为 “/”。 更多信息请查看http://codeigniter.com/wiki/SSL_Handling

    【讨论】:

    • 感谢您的回复。顺便说一句,您确定此代码有效吗?我试过了,我的整个网站都不起作用。浏览器给出一条错误消息,指出我的网站已关闭或正在维护中……有什么想法吗?
    • @Digitalsite 取决于您想如何使用,有多种方式,从核心控制器到助手。可以检测端口并转发
    • 谢谢。这很有帮助。
    • 来自您发布的链接,第一个讨论帖子:“我认为这不是一个完整的解决方案。如果您想通过 SSL 提交敏感信息(例如密码),只需使用此 htaccess 重定向将看到信息首先在未加密的请求中发送,然后在重定向时再次通过 SSL。"
    • @qwertzman 是的,但是,您提交帖子的表单将通过 SSL。例如支付页面,当你点击支付页面时,它会重定向到加密支付页面,你在加密页面上提交。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    相关资源
    最近更新 更多