使用JS:(在<head>
标记中)
<script>window.location="https://stackoverflow.com";</script>
使用PHP:(在<head>
标记中)
header('Location: https://stackoverflow.com');
end();
我应该使用哪一个?或另一个?
和如何使用 <meta>
?
<meta http-equiv="refresh" content="0;url=https://stackoverflow.com"/>
许多好的答案,我不知道我会接受哪个答案,非常感谢
答案 0 :(得分:17)
所有选项的结果都相同。重定向。
HTML中的 <meta>
:
window.location
:
if (1 === 1) { window.location.href = 'http://example.com'; }
。 header('Location:')
:
header()
必须是php脚本中的第一个命令。如果您尝试在标题之前输出一些,则会收到Warning: Cannot modify header information - headers already sent
答案 1 :(得分:11)
在JS中设置位置的更好方法是:
window.location.href = 'https://stackoverflow.com';
是否使用PHP或JS来管理重定向取决于您的代码正在做什么以及如何做。但是如果你能够使用PHP;也就是说,如果您要使用PHP将一些JS代码发送回浏览器,只是告诉浏览器去其他地方,那么逻辑建议您应该删除中间人并直接通过PHP告诉浏览器。
答案 2 :(得分:8)
这取决于您希望将用户重定向到另一个页面的方式和时间。
如果您希望立即将用户重定向到另一个页面,而不让他看到任何网站,则应使用PHP header
重定向方法。
如果你有一个Javascript并且用户的某些操作必须导致他进入另一个页面,那就是你应该使用window.location
。
每当您看到“您的下载应该自动启动”消息时,meta
标记刷新通常会在下载网站上使用。您可以让用户加载页面,等待一段时间,然后重定向他(例如,转移到要下载的文件),而不使用Javascript。
答案 3 :(得分:3)
PHP重定向更好,如果您可以使用JavaScript导致客户端在重定向之前加载页面,而使用PHP重定向则发送正确的标头。
然而,PHP不应该进入&lt; head&gt;,它应该在任何输出发送到客户端之前进行,否则会导致错误。
使用&lt; meta&gt;标签与Javascript具有相同的问题,导致在执行重定向之前加载初始页面。如果您可以使用它们,服务器端重定向几乎总是更好。
答案 4 :(得分:2)
当JS关闭时,第一种情况将失败。它也有点慢,因为必须首先解析JS(必须加载DOM)。但是JS更安全,因为目的地不知道引用并且您的重定向可能被跟踪(引用一般不可靠但这是事情)。
您还可以使用meta refresh标记。它还需要加载DOM。