繁体   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