小编avl*_*uis的帖子

重定向https:// www到https:// non-www - 没有看到证书错误,可能吗?

所以我的SSL证书仅适用于https://example.com - 而不是https://www.example.com(不能抱怨,它是免费的).

冒险进入mod_rewrite和大量阅读(主要来自stackoverflow)后,我有一个.htaccess文件,可以完成我需要的大部分工作,这里是该文件(当然还有域编辑).

<IfModule mod_rewrite.c>
    RewriteEngine On

    #First rewrite any request to the wrong domain to use the correct one
    RewriteCond %{HTTP_HOST} !^subdomain\.
    RewriteCond %{HTTP_HOST} ^(www|ftp|mail)\.example\.com [NC]
    RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

    #Redirect these subdomains to a subfolder
    RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.com$ 
    RewriteCond %1 !^(www|ftp|mail)$ [NC]
    RewriteRule (.+)$ "http://example.com/%1" [L,P]

    #Now, rewrite to HTTPS:
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

该脚本包含有关它的功能的评论(我需要的比你想象的更多).并且在重定向的子域的文件夹上有一个额外的.htaccess文件(根网站文件夹中的子文件夹,具有匹配的子域名)以及我的dns服务器上附带的dns条目.该文件夹上的.htaccess只是将http(端口80)重定向到https.

目前,它做了我需要的,但我正在寻找更简单的方法来写这个.而且更简单,它也可能意味着更全局化(如果它使其比硬编码域更快)并且如果从所述重写中获得任何速度改进.

如前所述,我的证书仅适用于非www example.com域名,因此这将我带到第二个(但我的主要)问题.

像这样路由的流量:https://www.example.com将在任何路由,重写等之前看到错误.这是因为此时甚至没有发生与Web服务器的连接,对吗?这基本上是你的服务器递交你的证书和浏览器说: 等一下!

有没有办法在浏览器发出证书错误之前阻止流量以不正确的方式(https:// www …

apache .htaccess mod-rewrite ssl redirect

6
推荐指数
1
解决办法
5252
查看次数

标签 统计

.htaccess ×1

apache ×1

mod-rewrite ×1

redirect ×1

ssl ×1