簡體   English   中英

.htaccess強制ssl而不是www

[英].htaccess force ssl when not www

我有一個網站,在訪問本質上托管實際應用程序的子域時使用ssl,而前端站點位於www,而我不想使用ssl。 因此,這將允許:

http://www.domain.com

但如果有人輸入:

http://secure.domain.com

他們被迫:

https://secure.domain.com

在使用此子域時,不允許任何非SSL流量。

目前,我的.htaccess文件中有此文件:

RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

RewriteCond "%{HTTP_HOST}" !^www.* [NC]
RewriteCond "%{HTTP_HOST}" ^([^\.]+).*$
RewriteRule ^(.*)$ https://secure.domain.com/a/login/%1 [R=301,L]

這可以正常工作,但是如果我隨后編輯URI以從https中刪除s,則它仍會加載頁面,但不會包含ssl。

如果我添加:

SSLOptions +StrictRequire
SSLRequireSSL

到.htaccess文件的頂部,則它始終將流量強制為ssl,但這適用於所有子域,包括www。

有沒有辦法只捕獲非www流量並強制使用ssl?

編輯:

澄清:

例如,如果您在:

https://secure.domain.com/a/login/test 

然后將URI編輯為

http://secure.domain.com/a/login/test 

那么它仍然會加載頁面,但不會使用ssl。 但是如果我用

SSLRequireSSL 

那么它會強制要求整個站點,而我不想在以下位置使用ssl

http://www.domain.com

解決了

經過一些調整后,我現在已經解決了這個問題。 我所做的是編輯應用程序所在子目錄中的.htaccess文件: https : //secure.domain.com/ a / login / test並將其設置為檢測是否正在使用ssl(我應該添加.htaccess文件的其余部分用於CodeIgniter):

RewriteEngine on

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

RewriteCond %{HTTPS} on
RewriteCond $1 !^(index\.php|images|includes|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM