Apache 将所有请求重定向到 https www

Apache 将所有请求重定向到 https www

这个问题已经被问过了,但我找不到解决方案。我对 Apache 的经验很少。我需要设置我的服务器来接收以下请求

http://, http://www. and https:// and convert them to https://www.

到目前为止,这就是我所拥有的,并且可以正常工作。

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

但是,当我输入时,它会在网址前面添加一个额外的 www。http://www.domain.com(所以最终在 URL 中看起来像这样https://www.www.domain.com)。我需要做什么才能让它正常工作?而且,我将其放在全局配置编辑配置文件 httpd.conf 中。这是正确的地方吗?看起来我可以将其放在虚拟主机编辑指令文件中,但我不确定?再说一次,我对 apache 还很陌生。感谢您的帮助。

答案1

这将有效

RewriteEngine on

# redirect all http -> https
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([a-z.]+)$ [NC]
RewriteRule ^/(.*)$ https://www.%1/$1 [R=301,L]

第一部分是您所拥有的,适用于 http->https

下一部分

第一行将忽略 www,第二行将忽略他们是否输入 ip 地址(如果需要,可以删除),第三行执行重定向。

答案2

这应该可以解决两个问题:你可以将其放在 .htaccess 或 httpd.conf 中

<IfModule mod_rewrite.c>
   RewriteCond %{HTTPS} !=on
   RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
   RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

相关内容