20

使用 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"/> 

很多好的答案,我不知道我会接受哪个答案,非常感谢

4

5 回答 5

26

所有选项的结果都是相同的。重定向。

<meta>在 HTML 中:

  • 显示您网站的内容,并在几(或 0)秒后重定向用户。
  • 不需要启用 JavaScript。
  • 不需要PHP。

window.location在 JS 中:

  • 需要启用 Javascript。
  • 不需要PHP。
  • 显示您网站的内容,并在几(或 0)秒后重定向用户。
  • 重定向可以依赖于任何条件if (1 === 1) { window.location.href = 'http://example.com'; }

header('Location:')在 PHP 中:

  • 不需要启用 JavaScript。
  • 需要 PHP。
  • 重定向将首先执行,用户永远看不到后面的内容。header()必须是 php 脚本中的第一个命令,然后才能输出任何其他命令。如果您尝试在标头之前输出一些内容,将收到一个Warning: Cannot modify header information - headers already sent
于 2013-03-27T09:04:12.017 回答
12

在 JS 中设置位置的更好方法是:

window.location.href = 'https://stackoverflow.com';

是使用 PHP 还是 JS 来管理重定向取决于您的代码在做什么以及如何操作。但是,如果您能够使用 PHP;也就是说,如果您打算使用 PHP 将一些 JS 代码发送回浏览器,只是告诉浏览器转到其他地方,那么逻辑建议您应该切断中间人并直接通过 PHP 告诉浏览器。

于 2013-03-27T09:09:13.450 回答
8

这取决于您希望如何以及何时将用户重定向到另一个页面。

如果您想立即将用户重定向到另一个页面而不让他看到任何中间站点,您应该使用 PHPheader重定向方法。

如果您有 Javascript 并且用户的某些操作必须导致他进入另一个页面,那么您应该使用window.location.

meta每当您看到这些“您的下载应自动开始”消息时,通常会在下载站点上使用标记刷新。你可以让用户加载一个页面,等待一段时间,然后在没有Javascript的情况下将他重定向(例如到一个要下载的文件)。

于 2013-03-27T09:18:00.937 回答
3

如果您可以使用 JavaScript 重定向,那么 PHP 重定向会更好,您会导致客户端在重定向之前加载页面,而使用 PHP 重定向会发送正确的标头。

但是 PHP 不应该进入 <head>,它应该在任何输出发送到客户端之前进入,否则会导致错误。

使用 <meta> 标记与 Javascript 在执行重定向之前导致初始页面加载具有相同的问题。如果您可以使用它们,服务器端重定向几乎总是更好。

于 2013-03-27T09:06:14.907 回答
2

当 JS 关闭时,第一种情况将失败。它也有点慢,因为必须先解析 JS(必须加载 DOM)。但是 JS 更安全,因为目的地不知道引用者,并且您的重定向可能会被跟踪(引用者通常不可靠,但这是某些东西)。

您还可以使用元刷新标签。它还需要加载 DOM。

于 2013-03-27T09:05:58.733 回答