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

标签 regex apache .htaccess mod-rewrite https

我知道有很多类似的线程,但是似乎没有一个与我的确切问题相符。这是我想要做的:

(1) http://www.mydomain.com/ -> https://mydomain.com/
(2) http://mydomain.com/     -> https://mydomain.com/
(3) https://www.mydomain.com -> https://mydomain.com/

理想情况下,如果我要添加更多的子域,并自动执行以下操作(最好以适用于我添加的任何子域的通用方式),我也希望涵盖这种情况。
(4) http://sub.mydomain.com/ -> https://sub.mydomain.com/

在这一点上,我想知道是否甚至可以创建一个可以满足我所有需求的.htaccess文件,尽管我不得不承认我了解正则表达式,但是我并不是完全mod_rewrite uberpro。

这是我已经尝试过的解决方案:
  • Force non-www and https via htaccess
  • 工作正常,但似乎会生成重定向循环
  • .htaccess redirect www to non-www with SSL/HTTPS
  • 适用于(1)和(3),但不适用于(2)
  • htaccess force www to non-www with consideration of http or https
  • 重定向到(1)
  • http://mydomain.com/(不带https)
  • 对(2)
  • 不执行任何操作
  • 重定向到(3)
  • http://mydomain.com/(不带https)

    我的SSL证书涵盖了www-subdomain,因此,我不是在寻找“不受信任的连接”错误解决方案,我知道这是不可能的。

    最佳答案

    将此代码放在您的DOCUMENT_ROOT/.htaccess文件中:

    RewriteEngine On
    
    RewriteCond %{HTTPS} off
    RewriteCond %{ENV:HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
    
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301,NE]
    

    关于regex - htaccess强制使用https并将www重定向到非www,但没有其他子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21467329/

    相关文章:

    .htaccess - 从 OpenCart 中删除 index.php?route=

    .htaccess - 如何强制浏览器使用 .htaccess 下载目录中的所有文件类型?

    javascript - 为什么我的 javascript 匹配返回 null?

    用于匹配 1 次或多次出现的 JAVA 正则表达式

    apache - 为什么我们需要在 http 响应消息中同时使用状态代码和短语代码?

    apache - 如果 url 匹配,.htaccess 跳过所有规则

    css - NGINX 无法加载 css

    javascript - 正则表达式从数组项中删除散列元素

    如果符号之间没有空格,C 计数字程序就可以工作,为什么?

    python - Django、Apache 和 session