我正在尝试配置托管在 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。这是我到目前为止所做的:
example.com
和www.example.com
都指向正确的IP地址。# 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
故障排除步骤:
问题:
任何帮助将不胜感激!谢谢!
我遇到了同样的问题,出现了
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
Request URL
设置为 http://*
并将 Target URL
设置为 https://${1}