htaccess 重写不带走 www

htaccess rewrite not taking away www

我有一个 .htaccess 文件,我想做两件简单的事情。

  1. 我希望我的所有页面都显示为 https(这工作正常)。
  2. 当有人访问我的站点时,无论他们如何输入我的站点地址,我都希望它显示为 https://example.com

原因是每当有人通过 www.这导致他们必须尝试登录两次才能访问他们的帐户。当点击“登录”并重定向回索引页面时,它会导致一个新会话。

如果有人通过在浏览器栏中输入内容来访问我的网站...https://example.com 或 example.com ...它会正常工作。

这是我当前的 .htaccess 代码。

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/ [R,L]

我的 .htaccess 文件如何删除 www.解决我遇到的这个问题?

你可以使用这个.htaccess:

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

仅供参考,这可以用更少的代码完成。

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