.htaccess强制https在某些网址上,否则强制http

时间:2012-07-11 16:22:55

标签: .htaccess codeigniter ssl

我正在尝试在网站的3个页面上强制使用SSL,并将其余部分强制为http

mydomain.com/register,mydomain.com/checkout和mydomain.com/thanks都需要重定向到https:但任何其他页面都应该只使用http:

这可能吗?

我目前在htaccess

中有一些特定于codeigniter的东西
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

2 个答案:

答案 0 :(得分:2)

不是.htaccess解决方案,但这是我强制https连接的方式:

// Redirect to secure port
if ($_SERVER['SERVER_PORT'] != 443)
{
    $location = 'Location: https://www.blah.com';
    header($location);
}

希望这有帮助。

答案 1 :(得分:2)

我认为此代码可以使用(特别是对于CodeIgniter)

RewriteEngine on

# force HTTPS
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} (register|checkout|thanks)
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# force HTTP
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} !(register|checkout|thanks|css|img|js)
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [L]