ショッピングカートアプリにSSLルーティングソリューションを採用して、特定のページがhttps://ページとvisa-verseに「強制」されるようにしようとしています。調査を通じて、ヘルパー、フック、またはコントローラーのいずれかでコードを使用することを含む多くのソリューションに出くわしました。これらの解決策をいくつか試しましたが、それぞれでhttps://ページに切り替えるとリダイレクトエラーが発生します。
これが私が試した最後のバージョンです(ここにあります:http://nigel.mcbryde.com.au/2009/03/working-with-ssl-in-codeigniter):
ssl_helper.phpという名前のファイルをapplication/helperに作成します
if (!function_exists('force_ssl'))
{
function force_ssl()
{
$CI =& get_instance();
$CI->config->config['base_url'] =
str_replace('http://', 'https://',
$CI->config->config['base_url']);
if ($_SERVER['SERVER_PORT'] != 443)
{
redirect($CI->uri->uri_string());
}
}
}
function remove_ssl()
{
$CI =& get_instance();
$CI->config->config['base_url'] =
str_replace('https://', 'http://',
$CI->config->config['base_url']);
if ($_SERVER['SERVER_PORT'] != 80)
{
redirect($CI->uri->uri_string());
}
}
ヘルパーをロードしてから、SSLを必要とするコントローラーのコンストラクターに次のように挿入します。
force_ssl();
sslを配置したくないすべてのコントローラーで:
if (function_exists('force_ssl')) remove_ssl();
上記のように、これを使用すると、リダイレクトループでスタックし、エラーが発生します(ただし、URLにはhttps://が含まれているはずです)。私の問題は私の.htaccessファイルにあるのでしょうか?これが私の.htaccessファイルです:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /store
RewriteCond $1 !^(index.php\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
</IfModule>
私はもう一週間以上これにいます!助言がありますか?