2

我有一个带有登录表单的 Codeigniter 应用程序。我在 Apache 和 Nginx 上都运行了它。在 Apache 上,一切正常,表单操作也正常。但是在 Nginx 上,表单操作使用https而不是http(我目前不想要)。

我使用这个生成表单:

<?php echo form_open(site_url('/user/do_login')); ?>

它产生了这个:

<form action="https://example.com/index.php/user/do_login" method="post" accept-charset="utf-8">

如何强制它生成http而不是https在 Nginx 上生成?

4

2 回答 2

7

假设您正在使用自动 site_url 检测,Codeigniter 自己的 http/https 检测依赖于该$_SERVER['HTTPS']值,off如果它实际上设置为某个值,http则为 base_url 生成。

检查您的默认 fastcgi_params (通常/etc/nginx/fastcgi_params),也许它将其设置为空字符串或“关闭”以外的其他内容,您也可以从 nginx 配置强制它为“关闭”:

fastcgi_param  HTTPS off;

如果您server在 nginx 的配置文件中对 http 和 https 连接使用一个块,则可以使用映射来根据$scheme变量创建所需的值:

# somewhere inside http { ... }
map $scheme $php_https { default off; https on; }

并在中引用它fastcgi_param

fastcgi_param  HTTPS $php_https;
于 2012-11-07T15:22:44.287 回答
1

检查 Nginx 框与 Apache 框上的 config.php。site_url 返回您在 config.php 的 $config['base_url'] 条目中指定的内容

于 2012-11-07T15:26:02.483 回答