柔軟なbase_url

どういうわけか、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



All Articles