【发布时间】:2019-06-02 21:05:57
【问题描述】:
我已经发布了一个 symfony 4 网站,我可以在域上毫无问题地访问它。然而,大多数人都会得到错误:
重定向过多
读到这个,我相信不知何故存在重定向循环。问题是,我自己无法重现该问题,因此无法测试不同的解决方案。我不明白为什么我没有这个问题,而其他人有。我正在使用带有以下 .htaccess 文件的 Apache:
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{HTTP:Authorization} .
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /index.php/
</IfModule>
</IfModule>
你能看看有什么问题吗?而且,为什么我没有同样的问题?
编辑: 另一个奇怪的事情是:看到错误的人可以通过访问 www.domain.com/page(这是一个实际页面)来访问域。这只是他们无法直接访问的主页。当他们从不同的页面“进入”时,他们可以访问主页。
Edit2:在www.redirect-checker.org 上运行测试,结果如下:
结果
https://www.studiosaam.nl 302 找到 /?_locale=de 302 找到 /?_locale=de 302 找到 /?_locale=de 302 找到 /?_locale=de 302 找到 /?_locale=de 302 找到 /?_locale=de 302 找到 /?_locale=de 302 找到 /?_locale=de 500 发现内部服务器错误问题:
重定向过多。请尝试减少 https://www.studiosaam.nl 的重定向次数。实际上,您使用 8 个重定向。理想情况下 您不应在重定向链中使用超过 3 个重定向。更多的 超过 3 个重定向将在您的服务器上产生不必要的负载,并且 降低速度,最终导致糟糕的用户体验。 您使用 302 重定向。这意味着,实际内容是暂时无法访问的,很快就会回来。使用 302 通常移动页面的重定向是一个坏主意。搜索引擎机器人 可能不会遵循它或将其视为临时的。对于 SEO 这也是一个 坏主意,因为没有链接汁将转移到链接 页面。
【问题讨论】: