.htaccess 301在htaccess中使用单重定向从非WWW重定向到https://www

yrdbyhpb  于 2022-11-16  发布在  其他
关注(0)|答案(2)|浏览(220)

我见过几个解决方案,301重定向非www http,即http://domain-name到https://www.domain-name,但所有这些(以我的经验)都给出了2个重定向。
它们要么首先从非www重定向到www,然后从http重定向到https,要么首先在第二重定向中,然后在第一重定向中。

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.example.com%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

最好的解决方案将是一个301重定向,其中既照顾非www以及http的一部分。
最佳RGDS,
贾伊

wkyowqbh

wkyowqbh1#

我正在使用此代码,但在使用www.example.com测试http://example.com时,我只得到一个301重定向(到https://www.example.com)httpstatus.io

# ensure www
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

# ensure https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

1.第一条规则,如果您的地址不是以www开头,将被重定向到https + www(一次重定向)
1.第二条规则仅适用于您的地址以www开头(因为规则1)并且不包含https的情况。(一次重定向)
您访问的域名http://infocera.com正在被重定向。
使用@MrWhite关于您的域名通过Cloudflare的建议:你应该去你的域在Cloudflare -〉规则-〉页面规则和删除任何你有关于重定向的规则。

jtoj6r0c

jtoj6r0c2#

我建议通过合并两个条件将这两个规则合并为一个规则:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\. [OR]
RewriteCond %{HTTPS} off
RewriteRule ^ https://www.example.com%{REQUEST_URI} [L,R=301]

这是简单的,因此很容易理解的任何人维护的网站。
唯一的缺点是你必须在目标规则中指定一个固定的http主机。这是非常好的 * 除非 * 如果你托管多个域并希望找到一个同时适用于所有域的解决方案。
我建议不要这样做。这些一般规则与应用程序逻辑无关,人们应该总是倾向于在实际的http服务器的主机配置中实现这些一般规则,而不是使用 distributed 配置文件这意味着您对不同的域有不同的配置,这再次允许将这样的规则放置到单独的配置文件中,同时仍然仅具有执行的单个实际重定向。

相关问题