【问题标题】:.htaccess redirect without WWW to HTTPS doesn't work没有 WWW 的 .htaccess 重定向到 HTTPS 不起作用
【发布时间】:2019-12-25 10:33:10
【问题描述】:

像“mydomain.com”这样没有“www”的主域的.htaccess 重定向不起作用,将地址留在普通的http://,那么这段代码有什么问题?以及如何强制将所有地址重定向到 https://?

ErrorDocument 404 /404.php

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

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1

【问题讨论】:

  • 代码在哪里?您只重定向以 www 开头的请求
  • 我有一个处理请求的 index.php,我唯一的问题是只有 www 被重定向到 https,正如你所指出的那样,因为我对 htaccess 的了解真的很差,所以我坚持这样做问题,要重定向http,像这样的 %{HTTP_HOST} ^http.(.*) [NC] 存在吗?
  • 你应该检查词汇表 ;) HTTP_HOST 包含主机。这可能以http 开头,但这并不常见。通常它包含www.domain.com

标签: .htaccess http redirect https


【解决方案1】:

检查这些修改后的规则强制没有 www 和 ssl

RewriteEngine On

# force to non-www
RewriteCond %{HTTP_HOST} ^www.(.*) [NC] 
RewriteRule ^(.*) https://%1/$1 [R=301,L]

# force to ssl
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L]

ErrorDocument 404 /404.php

【讨论】:

    猜你喜欢
    • 2017-06-21
    • 1970-01-01
    • 2016-05-24
    • 2018-10-24
    • 2022-01-11
    • 1970-01-01
    • 2021-11-10
    • 2012-12-23
    相关资源
    最近更新 更多