【问题标题】:htaccess rewrite not taking away wwwhtaccess 重写不带走 www
【发布时间】:2015-06-01 14:52:54
【问题描述】:

我有一个 .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/$1 [R,L]

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

【问题讨论】:

  • 您只检查http://wwwhttps://www 将拥有 443 端口,而 Cond 则失败,导致其他一切都放弃。

标签: php apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

你可以使用这个.htaccess:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-21
      • 2021-12-26
      • 2015-01-10
      • 1970-01-01
      • 2014-06-25
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 2014-05-02
      相关资源
      最近更新 更多