Apache 使用SSL时将www.重定向到裸域

Apache 使用SSL时将www.重定向到裸域,apache,ssl,mod-ssl,Apache,Ssl,Mod Ssl,Some context:我正在为域domain.com和alternate domain.com下的网站提供服务。我想重定向所有请求,以便它们: 使用SSL(基本上是重定向http->https) 使用规范主机名domain.com(例如,删除www前缀) 这就是我在apache配置顶部的配置: <VirtualHost *:80> Redirect permanent / https://domain.com/ </VirtualHost> <Virtua

Some context:我正在为域
domain.com
alternate domain.com
下的网站提供服务。我想重定向所有请求,以便它们:

  • 使用SSL(基本上是重定向http->https)
  • 使用规范主机名
    domain.com
    (例如,删除
    www
    前缀)
  • 这就是我在apache配置顶部的配置:

    <VirtualHost *:80>
      Redirect permanent / https://domain.com/
    </VirtualHost>
    
    <VirtualHost *:433>
      Redirect permanent / https://domain.com/
      SSLEngine on
    
      # SSL Certificate directives are here.
    </VirtualHost>
    
    
    重定向永久/https://domain.com/
    重定向永久/https://domain.com/
    斯伦金安
    #这里有SSL证书指令。
    
    然后,我有了以下配置:

    
    ServerName域名.com
    # ...
    
    当我访问非HTTPS页面时,这将按预期工作:

    • 重定向到
      https://domain.com
    • 重定向到
      https://domain.com
    但是,当我通过HTTPS访问域时,不起作用。我的意思是,重定向不会发生

    示例:

    (注意:出现证书警告是正常的,因为它们与我拥有证书的域不匹配。这更说明了重定向用户的原因。)


    我做错了什么?

    您的配置显示,当有人输入的URL时,服务器应将其重新发送到-而您在此处看不到该漏洞


    在443虚拟主机中丢失重定向。如果您必须使用前端控制器(这是错误的原因很多),那么请使用404处理器。

    好的,问题解决了-我犯了一个典型的愚蠢错误


    在SSL默认vhost中,我监听端口
    433
    。当然应该是
    443

    另外,我想避免
    mod\u重写
    。相关但没有帮助:感谢您的回答,但virtualhosts不是这样工作的-Apache匹配ServerName指令,并对不匹配的域使用第一个virtualhost。请注意,您使用的证书必须对您使用的所有主机名有效(有和没有
    www
    )。除了用户输入
    https://www.domain.com
    ?他们可能会输入
    http://www.domain.com
    然后将重定向到https
    <VirtualHost *:443>
      ServerName domain.com
      # ...
    </VirtualHost>