簡體   English   中英

htaccess,重定向到特定文件的https和非www https

[英]htaccess, redirect to https for a specific file and to non-www https

我有一個網站可以工作,並嘗試通過htaccess進行幾天的重定向。 我已經在網上搜索並找到了不錯的作品,尤其是在該網站上,但是盡管我嘗試了幾乎所有的可能性,但我仍未實現我想做的事情。

我需要將所有站點重定向到非www http,包括https,僅一個文件除外。 假設重定向http://://www.example.com/.../....php?a = ...
https://www.example.com/.../....php?a = ...
https://example.com/.../....php?a = ...

http://example.com/.../....php?a = ...

但是,只有一個特定文件
http://www.example.com/.../theSpecificFile.php?a = ...
https://www.example.com/.../theSpecificFile.php?a = ...
http://example.com/.../theSpecificFile.php?a = ...
應該重定向到
https://example.com/.../theSpecificFile.php?a = ...

為此,我編寫了許多htaccess文件,但在每種情況下,我都無法滿足我的需求。 例如在最后的htaccess:

Options +FollowSymlinks        
RewriteEngine on    
RewriteBase /    

ErrorDocument 404 http://example.com/404.php    

#force https for certain pages        
RewriteCond %{HTTPS} !=on    
RewriteRule ^(theSpecificFile\.php)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]    

RewriteCond %{HTTPS} on    
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L]    

#redirect www.example.com to example.com (or any other subdomain)    
RewriteCond %{HTTP_HOST} !^example.com$ [NC]    
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301] 

通過此htaccess文件,

當我嘗試通過ssl_error_bad_cert_domain獲得https://:// www的 不安全或不可信連接 (我正在從另一種語言翻譯,希望它可能是真正的翻譯)時

當我嘗試訪問theSpecificFile.php時,出現定義“ infine loop ”的錯誤(再次希望這可能是真正的翻譯)。

這真的讓我感到沮喪,因此,任何幫助將不勝感激。

提前致謝

看,在這里您將theSpecificFile.php重定向到其https版本,但是第二條重定向規則觸發並將瀏覽器重定向到http,然后從那里將第一條規則重定向回到https ...這就是為什么會出現無限循環的原因。

ssl_error_bad_cert_domain表示該證書不適用於該域,因此您可能需要檢查是否使用了正確的證書。

請試試:

RewriteCond %{HTTPS} on
RewriteConf %{REQUEST_URI} !=/theSpecificFile.php
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

您可以使用:

RewriteCond %{HTTPS} on    
RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{REQUEST_URI} !/theSpecificFile\.php [NC]
RewriteRule ^ http://example.com/%{REQUEST_URI} [L,R=302]    

RewriteCond %{HTTPS} off    
RewriteCond %{REQUEST_URI} /theSpecificFile\.php [NC]
RewriteRule ^ https://example.com/%{REQUEST_URI} [L,R=302]    

一切正常時,將[R = 302,L]更改為[R = 301,L]

暫無
暫無

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

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