如何为您的网站(通过Apache .htaccess)的Https://版本提供服务仅限于支持SSL/TLS加密的设备

如何为您的网站(通过Apache .htaccess)的Https://版本提供服务仅限于支持SSL/TLS加密的设备

问题描述:

我有一个精简版(即瘦身/轻量级),“feature phone”我的primary website版本,在线https://fp.jamesandersonjr.com,我去测试它在我能找到的最老的手机上,在我的房子里,至少有wi-fi,旧的LG 840G,只能发现手机不支持https://协议!如何为您的网站(通过Apache .htaccess)的Https://版本提供服务仅限于支持SSL/TLS加密的设备

所以,我的问题是,如何强制https://版本的网站上支持加密设备(SSL/TLS/HTTPS),而设备,如功能手机(如LG840G),将'自动'和'仅'服务于该网站的http://版本?

实现这一点很棒,因为我相信Google知道如何去做。

我需要在我的'根'Apache .htaccess文件中这样做,因为我确信这是最可行的方式,来完成这样的事情。

好了,我测试了LG-840克,与此页:http://fp.jamesandersonjr.com/php/user_agent_detector.php

事实证明,它使用的用户代理字符串与Obigo浏览器,所以我设计了这个.htaccess代码:

RewriteEngine On 
RewriteOptions inherit 
RewriteBase/

RewriteCond %{HTTP_USER_AGENT} "!(obigo|palmos|webos)" [NC] 
RewriteCond %{HTTPS} !on [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTP_USER_AGENT} "(obigo|palmos|webos)" [NC] 
RewriteCond %{HTTPS} on [NC] 
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

它只适用于http:(非安全)版本的旧版移动浏览器,不支持https://。它的不是应该赶上现代,'智能'电话,浏览器。他们可以正确处理SSL/TLS/HTTP。

+0

我不认为apache会知道哪个设备支持ssl/https,但你可以决定哪些设备做...所以https://www.howtoforge.com/apache2-how-to-redirect-users-to - 移动 - 或正常的网站为基础上的设备,使用-mod_rewrite的。 使用设备检测您可以使用mod_rewrite重定向,以防设备类型匹配。谷歌搜索还返回了这个:http://www.apachemobilefilter.org/ – Liquidchrome

+0

@Liquidchrome:该方法只适用于http连接,而不是https。 –

+1

我怀疑有什么*安全*的方式来做你所要求的。在HTTPS中发生的第一件事是TLS连接的协商,然后* HTTP协议启动。如果您实施某种方法来检测设备何时不支持HTTPS,那么几乎定义该方法将不安全,并且攻击者将能够(也许是中间人)将强制该路线下的连接。如果你必须*支持不安全的设备,最好的办法是建立一个不同的网站,叫做insecure.jamesandersonjr.com,它提供你必须的任何不安全的服务。 –

答案是找出哪些浏览器一般都太旧,以支持SSL/TLS/HTTPS正常,并有阿帕奇.htaccess“杂草出” 只有那些特定的浏览器的类型。其余的浏览器将被迫使用https://。这里的.htaccess代码,要做到这一点:

RewriteEngine On 
RewriteOptions inherit 
RewriteBase/

RewriteCond %{HTTP_USER_AGENT} "!(obigo|palmos|webos)" [NC] 
RewriteCond %{HTTPS} !on [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTP_USER_AGENT} "(obigo|palmos|webos)" [NC] 
RewriteCond %{HTTPS} on [NC] 
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

我们如果发现一般,很旧,或通常残疾任何其他浏览器我知道,这样我就可以更新代码。

+0

顺便说一句,这对我来说非常适合! –