Apache VirtualHost : strip www. 并强制 https

标签 apache mod-rewrite ssl vhosts

我在一个只拥有 monsite.fr SSL 证书的网站上工作。我正在尝试删除 www。并重定向到 https://monsite.fr。 如果用户键入 www.monsite.fr,则重定向不起作用,他将不会被重定向到 https://monsite.fr,而是重定向到 https://www.monsite.fr 并得到认证错误 NET::ERR_CERT_COMMON_NAME_INVALID

这是 mysite.conf 文件的内容:

<IfVersion < 2.3 >
  NameVirtualHost *:80
  NameVirtualHost *:443
</IfVersion>

<VirtualHost *:80>
  ServerName monsite.fr
  Redirect / https://monsite.fr/

  #RewriteEngine On
  #RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
  #RewriteRule ^(.*)$ https://%1$1 [R=permanent,L]
</VirtualHost>

<VirtualHost *:80>
  ServerName www.monsite.fr
  Redirect / https://monsite.fr/
</VirtualHost>

<VirtualHost *:443>
  ServerName monsite.fr
  ServerAlias www.monsite.fr

  #RewriteEngine On
  #RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
  #RewriteRule ^(.*)$ https://%1$1 [R=permanent,L]

  RewriteEngine On
  RewriteCond %{HTTPS} =on
  RewriteCond %{HTTP_HOST} ^www\.
  RewriteRule ^(.*)$ https://monsite.fr/$1 [R,QSA,L]

  DocumentRoot "/opt/monsite.fr/htdocs"
</VirtualHost>

是否有将 www.monsite.fr 重定向到 https://monsite.fr 的解决方案?

最佳答案

如下修改您的虚拟主机配置:

  <VirtualHost *:80>
      ServerName www.monsite.fr
      ServerAlias monsite.fr
      RedirectMatch ^/(.*)$ https://monsite.fr/$1
    </VirtualHost>

    <VirtualHost *:443>
      ServerName www.monsite.fr
      RedirectMatch ^/(.*)$ https://monsite.fr/$1
    </VirtualHost>

    <VirtualHost *:443>
      ServerName monsite.fr
      SSLEngine On
      SSLCertificateFile    /path_to_cert/server.crt
      SSLCertificateKeyFile /path_to_key/server.key
      DocumentRoot "/opt/monsite.fr/htdocs"
    </VirtualHost>

第一个虚拟主机 block 将重定向所有来自 http://www.monsite.fr 的请求至 https://monsite.fr .它还将重定向来自 http://monsite.fr 的所有请求至 https://monsite.fr

第二个虚拟主机 block 将重定向所有来自 https://www.monsite.fr 的请求至 https://monsite.fr .

第三个虚拟主机 block 将为 https://monsite.fr 提供内容.确保编辑上述配置并为 SSL 证书添加正确的路径 /path_to_cert/server.crt 和为私钥添加 /path_to_key/server.key

关于Apache VirtualHost : strip www. 并强制 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37112302/

相关文章:

python - 当我们有 python 的内置 SimpleHttpServer 时,是否需要 apache

apache - Nutch 2.1 urls 注入(inject)需要永远

apache - 使用 PHP 的 .htaccess 进行 URL 重写

ajax - Apache "_escaped_fragment_"重定向

web-services - 在 Azure Web 服务 (API) 上强制执行 HTTPS 重定向

ruby was-sdk v2:Seahorse::Client::NetworkingError 异常:SSL_connect

apache - 即使我的浏览器尝试下载 .pl 脚本,如何执行它?

java - Apache 目录工作室 “Failed to load JNI shared library”

apache - URL 重写和文件夹

c# - .Net 阻止 API Web 服务连接