虚拟主机强制使用https并将www重定向到非www,但没有其他子域

杰克逊

这与htaccess force https和将www重定向到非www基本上是相同的问题,但是没有其他子域(即,我想配置Apache以将所有非HTTPS和/或“ www” URL重定向到HTTPS非www URL) ,但是我想通过虚拟主机而不是.htaccess文件来配置Apache (因为我读到避免避免.htaccess有一些好处)。

使用.htaccess文件时,我可以获得以下答案https : //stackoverflow.com/a/34333450/1468130但是,当我尝试将该答案的配置转移到我的虚拟主机配置时,它不起作用。https://www.domain.com ”从未重定向到“ https://domain.com ”。

我仔细阅读了.htaccess虚拟主机.conf文件和虚拟主机文件之间的区别,并发现了此http://tltech.com/info/rewriterule-in-htaccess-vs-httpd-conf/和以下内容:https : //www.digitalocean.com/社区/问题/您是否可以使用虚拟主机配置-conf-to-redirect-www-domain-to-non-www?answer = 15129,这似乎暗示我可以将配置包装成一个<Directory>块,然后它会工作。不幸的是,它没有(“ https://www.domain.com ”仍然从未重定向到“ https://domain.com ”),所以我想知道互联网是否知道我在做什么错:

<VirtualHost *:80>
        ServerName domain.com
        ServerAlias www.domain.com

        ServerAdmin [email protected]
        DocumentRoot /var/www/domain.com/

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        <Directory /var/www/domain.com/>
                RewriteEngine On

                # match any URL with www and rewrite it to https without the www
                RewriteCond %{HTTP_HOST} ^(www\.)(.*) [NC]
                RewriteRule (.*) https://%2%{REQUEST_URI} [L,R=301]

                # match urls that are non https (without the www)
                RewriteCond %{HTTPS} off
                RewriteCond %{HTTP_HOST} !^(www\.)(.*) [NC]
                RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
        </Directory>
</VirtualHost>

我也尝试<VirtualHost *:443>按照评论中的Dusan Bajic的建议进行配置,但这也没有任何效果。https://www.domain.com仍然不会重定向到https://domain.com

<VirtualHost *:443>
        ServerName domain.com
        ServerAlias www.domain.com

        ServerAdmin [email protected]
        DocumentRoot /var/www/domain.com/

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLCertificateFile /etc/letsencrypt/live/domain.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateChainFile /etc/letsencrypt/live/domain.com/chain.pem

        <Directory /var/www/domain.com/>
                RewriteEngine On

                # match any URL with www and rewrite it to https without the www
                RewriteCond %{HTTP_HOST} ^(www\.)(.*) [NC]
                RewriteRule (.*) https://%2%{REQUEST_URI} [L,R=301]
        </Directory>
</VirtualHost>

同样根据注释,我尝试了上述*:443配置,并*:80与将<Directory>块更改为仅将HTTP重定向到HTTPS的配置配对但是,当我这样做时,“ www”永远不会被删除。

<Directory /var/www/paradoxmayhem.com/>
        RewriteEngine On

        RewriteCond %{SERVER_NAME} =www.paradoxmayhem.com [OR]
        RewriteCond %{SERVER_NAME} =paradoxmayhem.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</Directory>
杰克逊

知道了!显然,当我使用letencrypt(certbot)配置SSL时,它会自动创建另一个虚拟主机文件(位于/etc/apache2/sites-enabled/domain.com-le-ssl.conf),该文件具有自己的domain.com *:443虚拟主机定义,并且似乎优先于*:443我尝试设置的任何配置前。我将以下代码添加到-le-ssl.conf文件中,现在,使用100%Apache Virtual Host配置,重定向最终可以在所有需要的情况下工作:

<Directory /var/www/domain.com/>
        RewriteEngine On

        # match any URL with www and rewrite it to https without the www
        RewriteCond %{HTTP_HOST} ^(www\.)(.*) [NC]
        RewriteRule (.*) https://%2%{REQUEST_URI} [L,R=301]
</Directory>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

htaccess强制使用https并将www重定向到非www,但没有其他子域

来自分类Dev

htaccess强制使用https并将非www重定向到www(如果没有子域)

来自分类Dev

如何从http://重定向到https://到https:// www,而又不会破坏不是www的其他子域?

来自分类Dev

使用.htaccess将所有网站链接www重定向到非www并将http重定向到https

来自分类Dev

将http://和http:// www重定向到https:// www,而不会影响网站上的其他子域

来自分类Dev

301将子目录中的www和其他子域重定向到非www

来自分类Dev

重定向www。到非www并使用.htaccess将所有http重定向到https

来自分类Dev

重定向www。到非www并使用.htaccess将所有http重定向到https

来自分类Dev

Nginx将非www重定向到domain.com和子域的www和https

来自分类Dev

将所有非www,www,http://请求重定向到https:// www。使用.htaccess文件

来自分类Dev

将非www的http重定向到https,并将www重定向为子文件夹

来自分类Dev

如何使用htaccess将www和非www重定向到特定域的https

来自分类Dev

如何使用htaccess将www和非www重定向到特定域的https

来自分类Dev

NodeJS将所有非www重定向到www(子域除外)

来自分类Dev

Web.config 在将非 www 重定向到 www 时忽略所有子域

来自分类Dev

使用htaccess将非WWW重定向到WWW,而不会使子域失败

来自分类Dev

在.htaccess中将http重定向到https并将www重定向到非www

来自分类Dev

Nginx重定向www。错误的虚拟主机

来自分类Dev

将任何域从非 www 重定向到 www 和 HTTPS,无需双重重定向

来自分类Dev

htaccess:将所有子域重定向到主要的https www域

来自分类Dev

域重定向到www时如何将www子域重定向到非www

来自分类Dev

重定向http:// www。根域和子域均使用http://到https

来自分类Dev

使用301将www重定向到没有www的主域

来自分类Dev

使用.htaccess将http和https的所有非www都重定向到www

来自分类Dev

如何使用HTTPS专门重写/重定向URL,但没有子域具有WWW。通过IIS进入

来自分类Dev

.htaccess将所有请求重定向到非www https域?

来自分类Dev

.htaccess将所有请求重定向到非www https域?

来自分类Dev

将所有流量重定向到https(包括子域)并删除www

来自分类Dev

强制使用https://和www。与虚拟主机apache2

Related 相关文章

  1. 1

    htaccess强制使用https并将www重定向到非www,但没有其他子域

  2. 2

    htaccess强制使用https并将非www重定向到www(如果没有子域)

  3. 3

    如何从http://重定向到https://到https:// www,而又不会破坏不是www的其他子域?

  4. 4

    使用.htaccess将所有网站链接www重定向到非www并将http重定向到https

  5. 5

    将http://和http:// www重定向到https:// www,而不会影响网站上的其他子域

  6. 6

    301将子目录中的www和其他子域重定向到非www

  7. 7

    重定向www。到非www并使用.htaccess将所有http重定向到https

  8. 8

    重定向www。到非www并使用.htaccess将所有http重定向到https

  9. 9

    Nginx将非www重定向到domain.com和子域的www和https

  10. 10

    将所有非www,www,http://请求重定向到https:// www。使用.htaccess文件

  11. 11

    将非www的http重定向到https,并将www重定向为子文件夹

  12. 12

    如何使用htaccess将www和非www重定向到特定域的https

  13. 13

    如何使用htaccess将www和非www重定向到特定域的https

  14. 14

    NodeJS将所有非www重定向到www(子域除外)

  15. 15

    Web.config 在将非 www 重定向到 www 时忽略所有子域

  16. 16

    使用htaccess将非WWW重定向到WWW,而不会使子域失败

  17. 17

    在.htaccess中将http重定向到https并将www重定向到非www

  18. 18

    Nginx重定向www。错误的虚拟主机

  19. 19

    将任何域从非 www 重定向到 www 和 HTTPS,无需双重重定向

  20. 20

    htaccess:将所有子域重定向到主要的https www域

  21. 21

    域重定向到www时如何将www子域重定向到非www

  22. 22

    重定向http:// www。根域和子域均使用http://到https

  23. 23

    使用301将www重定向到没有www的主域

  24. 24

    使用.htaccess将http和https的所有非www都重定向到www

  25. 25

    如何使用HTTPS专门重写/重定向URL,但没有子域具有WWW。通过IIS进入

  26. 26

    .htaccess将所有请求重定向到非www https域?

  27. 27

    .htaccess将所有请求重定向到非www https域?

  28. 28

    将所有流量重定向到https(包括子域)并删除www

  29. 29

    强制使用https://和www。与虚拟主机apache2

热门标签

归档