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">

Nginxhttpの代わりに強制的に生成するにはどうすればよいですか?https

4

2 に答える 2

7

自動site_url検出を使用していると仮定すると、Codeigniter自体のhttp / https検出は、 base_urlのを生成するために、実際に何かに設定されている場合の$_SERVER['HTTPS']値にoffhttp依存します。

デフォルトのfastcgi_params(通常は/etc/nginx/fastcgi_params)を確認します。空の文字列または「off」以外の値に設定されている可能性があります。また、これをnginxconfigから強制的に「off」にすることもできます。

fastcgi_param  HTTPS off;

servernginxの構成ファイル内のhttp接続とhttps接続の両方に1つのブロックを使用している場合は、マッピング$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 に答える