どういうわけか、https経由でページにアクセスするときに、すべての内部リンクもhttpsのオプションに変更されました。 ページビューは異なるURLでロードされるため、相対パスは移動せず(
js / script.js )、base_url関数(
echo base_url()。 'Js / script.js' )を使用することにしましたが、実際には変数の内容が置換されます
$ config ['base_url'] 、これは静的です。
少し検索した結果、解決策が見つかりました-$ config ['base_url']の動的ベースパス。 また、プラスの効果として、ドメイン間でファイルを転送するときにbase_urlを変更する必要がなくなりました。
これらの変更をすぐに
system / config / config.phpファイルに追加すると最も便利
です$config[ 'base_url' ] = ((isset($_SERVER[ 'HTTPS' ]) && $_SERVER[ 'HTTPS' ] == "on" ) ? "https" : "http" );
$config[ 'base_url' ] .= "://" .$_SERVER[ 'HTTP_HOST' ];
$config[ 'base_url' ] .= str_replace(basename($_SERVER[ 'SCRIPT_NAME' ]), "" ,$_SERVER[ 'SCRIPT_NAME' ]);
より複雑なオプションがあります:
/* Detect ssl connectivity */
if ( isset($_SERVER[ 'HTTPS' ]) ) {
$ssl = $_SERVER[ 'HTTPS' ];
}elseif ( isset($_SERVER[ 'HTTP_FRONT_END_HTTPS' ]) ) {
$ssl = $_SERVER[ 'HTTP_FRONT_END_HTTPS' ];
} else {
$ssl = "OFF" ;
}
$root = (stripos($ssl, "ON" ) !== FALSE) ? "https" : "http" ;
/* Many pages/apps served through the same domain */
if ( isset($_SERVER[ 'HTTP_X_FORWARDED_HOST' ]) ) {
list($host) = explode( ',' , str_replace( ' ' , '' , $_SERVER[ 'HTTP_X_FORWARDED_HOST' ]));
} else {
$host = $_SERVER[ 'HTTP_HOST' ];
}
$root .= "://" .$host;
if ( ! isset($_SERVER[ 'ORIG_SCRIPT_NAME' ]) ) {
$root .= str_replace(basename($_SERVER[ 'SCRIPT_NAME' ]), "" ,$_SERVER[ 'SCRIPT_NAME' ]);
}
else {
$root .= str_replace(basename($_SERVER[ 'ORIG_SCRIPT_NAME' ]), "" ,$_SERVER[ 'ORIG_SCRIPT_NAME' ]);
}
$config[ 'base_url' ] = "$root" ;
Codeigniterフォーラムから取られたコード:
自動構成ベースURL