更正.htaccess规则以检测和重定向SNI不支持的浏览器

时间:2017-04-08 16:20:55

标签: apache .htaccess ssl redirect sni

我正在尝试找到最佳方法,而不会影响不受支持的SNI浏览器。我决定使用我在stackoverflow上找到的规则并对其进行修改,以便将每个键入mywebsite.com的用户重定向到www.mywebsite.com,如果浏览器支持SNI,则会重定向到https://www.mywebsite.com否则会将它们重定向到http://www.mywebsite.com

在Apache上托管多个网站(相同的IP地址)。

以下代码重定向任何人使用MSIE 5-8,较旧的Android版本,symbian,黑莓和Windows XP用户(到目前为止似乎只有Firefox支持Windows上的SNI,Chrome和Opera不再支持它了)

我正在为我的所有网站使用cloudflare免费计划(通用sll),以下是他们支持的浏览器列表https://support.cloudflare.com/hc/en-us/articles/203041594-What-browsers-work-with-Cloudflare-s-SSL-certificates-

这是使用.htaccess规则重定向所有不受支持的SNI浏览器以便人们不会收到错误的最佳方法吗?到目前为止,我在windows xp上做了一些测试,它确实正确地重定向到http://版本,没有注意到任何错误,但需要确保这是正确的规则。

Options -Indexes +FollowSymLinks
RewriteEngine On

    # www.
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTPS} (on|off)
    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    # https
    RewriteCond %{HTTP:X-Forwarded-Proto} !https 
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_USER_AGENT} !MSIE\ [5-8] [NC]
    RewriteCond %{HTTP_USER_AGENT} !Windows\sNT\s5
    RewriteCond %{HTTP_USER_AGENT} !Android.*(Mobile)?\ [0-3] [NC]
    RewriteCond %{HTTP_USER_AGENT} !^(.*.symbian.*) [NC]
    RewriteCond %{HTTP_USER_AGENT} !^(.*.blackberry.*) [NC]
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

此外,我将使用相对协议网址//而不是http://或https://,因为我将托管这两个内容。我知道这种技术现在被认为是一种仅支持ssl内容的网站的反模式,但由于我主持ssl和非ssl,我认为它更合适。

0 个答案:

没有答案