使用 Cloudflare 的 Apache 上的 HTTPS React 应用程序的非 WWW 到 WWW 重定向在 .htaccess 中不起作用 –“重定向过多”错误

问题描述 投票:0回答:1

我正在尝试配置托管在 Apache 服务器上的 React 应用程序,以确保我的域的所有版本(

http://example.com
https://example.com
http://www.example.com
https://www.example.com
)重定向到该网站。然而,我在访问时总是遇到“重定向太多”错误
https://example.com
,其余工作正常

注意:由于公司政策,我在这里使用 example.com 代替实际 URL。

我的应用程序使用 React Router 进行客户端路由,我使用 Cloudflare 进行 DNS 和 SSL。这是我到目前为止所做的:

  1. DNS 和 SSL 设置:
  • example.com
    www.example.com
    都指向正确的IP地址。
  • 我的 SSL 证书涵盖 URL 中带 www 和不带 www 的情况
  • 在 Cloudflare 中,SSL 设置为 Full(不灵活),我也尝试过 Full(严格)。
  1. 当前 .htaccess 配置
# Enable Rewrite Engine
RewriteEngine On

# Redirect Non-WWW to WWW with HTTPS
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

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

# Support for Client-Side Routing in React
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.html [L]

# Set Default Directory Index
DirectoryIndex index.html

# Custom Error Pages
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html

故障排除步骤:

  • 已清除浏览器缓存并清除 Cloudflare 缓存。
  • 在 Cloudflare 中测试了不同的 SSL 设置(“完整”和“完整(严格)”)。
  • 尝试将 Cloudflare 的页面规则与“始终使用 HTTPS”一起用于 example.com/(未成功)。

问题:

  1. 我的 .htaccess 配置是否有任何问题可能导致此重定向循环?
  2. Cloudflare 的 SSL 或缓存设置是否会干扰 .htaccess 规则?如果是,我该如何调整它们以避免冲突?
  3. 是否有其他方法可以强制执行非 www 到 www 重定向而不导致循环?

任何帮助将不胜感激!谢谢!

reactjs apache cloudflare
1个回答
0
投票

我遇到了同样的问题,出现了

Too many redirects
错误。我的设置有点不同 - React App 在 Azure Static Apps 上运行,我使用带有 URL 的 CNAME 记录,而不是 IP 地址,但我相信核心问题可能是相同的。它与 React 本身无关,而是与 Cloudflare 配置有关。最后一步解决了我将
SSL/TLS encryption
设置为
full strict
的问题。以下是我应用的设置:

  • 名为
    example.com
    的 CNAME 记录指向 Azure 上部署应用程序的 URL。
  • 名为
  • www
    CNAME 记录指向
    example.com
  • SSL/TLS 设置 > 配置 > 完整(严格)
  • 规则 > 重定向规则 > 创建规则 > 单击从 HTTP 重定向到 HTTPS - 创建规则。将
    Request URL
    设置为
    http://*
    并将
    Target URL
    设置为
    https://${1}
© www.soinside.com 2019 - 2024. All rights reserved.