0

このコードを使用しました

Options +FollowSymLinks
RewriteEngine on

# redirect for http /buy page
RewriteCond %{SERVER_PORT} =80
RewriteRule ^buy/?$ https://mysite.com/buy [R=301,QSA,L,NE]

# redirect for https non /buy pages
RewriteCond %{SERVER_PORT} =443
RewriteCond %{REQUEST_URI} !^/buy [NC]
RewriteRule ^/?(.*)$ http://mysite.com/$1 [R=301,QSA,L,NE]

これは https リダイレクトに対しては正常に機能していますが、URL から index.php を削除したいと考えています。そのためのコードは次のとおりです。

RewriteCond %{REQUEST_URI} ^/system.*
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?/$1 [L]

これら 2 つのコードを結合するにはどうすればよいですか。助けてください。

4

1 に答える 1

2

コードでそれを行うことができます。

ヘルパー関数を作成します。何かのようなもの

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());
        }
    }
} 

次に、必要なコントローラーの構成でこの関数を呼び出すだけです。

例えば

public function __construct() {
        parent::__construct();
        force_ssl();
}
于 2013-02-20T10:28:00.520 に答える