【问题标题】:Avoid multiple page redirects http://example.com > https://example.com -> https://www.example.com避免多个页面重定向 http://example.com > https://example.com -> https://www.example.com
【发布时间】:2020-12-11 02:05:26
【问题描述】:

GTMetrix 和 Google Pagespeed Insights 报告说,如果用户键入 domain.com,我的网站会因为多个页面重定向而变慢:

URL:                       TIME SPENT:
http://example.com/        285ms
https://example.com/       452ms
https://www.example.com    0ms

我正在尝试只进行一个(有条件的?)重定向,该重定向总是会出现在 https 和 www 子域中。

这是当前的 htaccess 代码:

RewriteEngine on
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule ^ https://www.%1%{REQUEST_URI} [NE,L,R]

它有效,但是有没有人痴迷于速度,可以帮助它更快地进入一个重写条件?

我在堆栈溢出(和其他地方)进行了无休止的搜索,但没有其他选择可以将一条语句中的所有内容与条件结合起来,并使其比目前的解决方案更快。

非常感谢您的见解!

【问题讨论】:

  • 该规则已经更快了,因为它将您的 httpnon-www URL 重定向到 https://www 在单个重定向中。
  • 正如 Amit 已经提到的,从您的规则方面来看,它看起来不错。试一试从网络站点检查如何?可能是网络数据包或跟踪等,同时发出请求以查看它是否也可以从那一侧。老实说,我不是专家,但如果从规则方面来说一切都很好,那么我会试一试,至少在故障排除列表中打勾。

标签: php .htaccess url-rewriting


【解决方案1】:

将 R 标志更改为 301:

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

因为默认情况下,它是一个 302(临时)重定向,您可以避免很多重定向。 http://httpd.apache.org/docs/current/rewrite/flags.html

【讨论】:

    猜你喜欢
    • 2016-01-16
    • 2020-09-24
    • 2015-09-25
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 2014-03-04
    • 2011-07-06
    • 2011-08-12
    相关资源
    最近更新 更多