Apache 2:在 htaccess 中使用 www 从 https 重定向到 https

Apache 2:在 htaccess 中使用 www 从 https 重定向到 https

我无法将我的网站从

https://example.comhttps://www.example.com

我也在 Stack Overflow 和 serverfault 上找到了很多建议(意味着将规则重写为 htaccess),但它们都不适用于我的情况。

证书是针对带有 www 的域名发送给我的,因此我必须将网站移至此类地址(因为之前的网站没有 www)。

http://example.comhttps://www.example.com

工作正常。

该网站是基于 WordPress 构建的,因此我也尝试安装一些插件来设置这种重定向,但没有成功。

有人能帮助我吗?有人知道我该怎么办吗?

我的实际 .htaccess 文件

# BEGIN WordPress
<IfModule mod_rewrite.c>     
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule (.*) https://www.example.com/$1 [R=301,L] 

</IfModule>

# END WordPress

请注意,我是初学者,所以也许解决方案非常简单和明显,但是......我对这个主题足够熟悉......请帮忙!

答案1

下面的重写规则可以解决这个问题:

#Rewrite non https to https

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

#Rewrite non-www to www

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

另外,不要忘记将您的 wordpress URL 更改为 www 和 https,否则会形成循环。
要更改 WordPress URL,请编辑 wp-config.php 并在 WP_DEBUG 行下添加以下行:

define('WP_HOME','https://www.example.com');
define('WP_SITEURL','http://www.example.com');

据我所知,如果你将 wordpress URL 更改为 www,它会自动将非 www wordpress url 重定向到 WWW,因此如果你遇到任何重定向循环,只需删除后面的行即可

#将非 www 改写为 www

从 htaccess 开始,您就可以开始了。 希望
这能有所帮助。Shahriar

相关内容