2012-07-11 94 views
1

我試圖迫使3頁的網站的SSL,並強制休息到http的.htaccess力HTTPS否則強制HTTP

mydomain.com/register,mydomain.com/checkout和MYDOMAIN .com /感謝所有需要重定向到https:但任何其他頁面應該只使用http:

這可能嗎?

我現在有一些笨具體的東西在我的htaccess

RewriteEngine on 
RewriteCond $1 !^(index\.php|assets|robots\.txt) 
RewriteRule ^(.*)$ index.php/$1 [L] 
+0

可能重複的 - 例如參見這些問題的答案:http://stackoverflow.com/questions/4192948/remove-www-site-wide- force-https-on-certain-directories-and-http-on-the-rest – Marki555 2012-07-11 17:48:12

+0

它不重複,問題是對的。需要找到CodeIgniter的解決方案....對於CI它不起作用。 – TechCare99 2014-05-17 05:46:40

回答

2

不是的.htaccess的解決方案,但在這裏就是我如何強制HTTPS連接:

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

希望這有助於。

+0

如果您使用的是Apache,您應該可以訪問許多與SSL相關的變量,在PHP中它們將在$ _SERVER []下顯示。這裏是列表http://www.modssl.org/docs/2.8/ssl_reference.html#ToC25 – Marki555 2012-07-11 17:50:45

2

我覺得這個代碼將工作(專門爲CodIgniter)

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] 
+0

感謝哥們。這應該是可以接受的答案:) – Waqas 2016-01-31 19:51:17