【问题标题】:Single Page 301 Redirect Not Redirecting?单页 301 重定向不重定向?
【发布时间】:2014-08-31 05:23:45
【问题描述】:

我确定我忽略了一些愚蠢的事情,但这是我第一次需要重定向。

我正在尝试使用 htaccess 文件将旧页面 301 重定向到新站点的相应页面。

HTAccess 内容如下:

<head>
</head>
Redirect 301 http://www.metalsetinc.com/about_us.html http://www.metalsetinc.com/about.html

我在重定向下有一个空行。

原始页面文件是否需要保留在服务器上才能进行重定向?我目前已将其移至旧版本文件夹。

使用这种格式,当我转到旧页面时,我只会收到 404 错误。

我错过了什么?

【问题讨论】:

  • 不要把 html 放到你的 .htaccess 中

标签: html apache .htaccess redirect


【解决方案1】:
  • 您的 .htaccess 文件应该具有该确切名称(您提到了 HTAccess
  • 它不应该包含任何 html,只包含 Apache 的说明。

例如,使用 mod-rewrite,它非常灵活,您以后可能需要更复杂的规则:

RewriteEngine On
RewriteRule ^about_us.html about.html [L,R=301]

这假设 mod_rewrite 安装了并且为 htaccess 文件激活。 如果不确定,要检查是否安装了 mod_rewrite,请查看phpinfo(); 输出中的已安装模块列表 默认情况下,不为 htaccess 文件启用 mod_rewrite。如果您正在管理自己的服务器,请打开 httpd.conf 并确保 webroot 目录块包含以下行之一:AllowOverride FileInfoAllowOverride All

【讨论】:

  • 我没有服务器访问权限,我刚刚学习了一些 .htaccess 功能。问题的一部分是我有一个名为 htaccess 的文件,而不是 .htaccess。谢谢!
【解决方案2】:

作为@zx81answer 的补充,

您可以使用 mod_alias 中的Redirect 指令,但如文档中所述,格式为:

重定向 [status] URL 路径 URL

第一个 URL 只是一个路径,而不是完整的。

所以这应该会更好:

Redirect 302 /about_us.html http://www.metalsetinc.com/about.html

我在这里使用的是 302 状态。您应该始终从临时 302 重定向开始。当它工作时,您可以将其更改为 301 永久重定向。但是在测试时使用 301 重定向会阻止您的浏览器重新尝试请求。在 301 模式下,来自服务器的每个响应都存储在浏览器内存中,测试新规则的唯一方法是先关闭浏览器。所以从 302 开始。

【讨论】:

  • “302 优先”的建议是有道理的。现在一切正常。谢谢!
  • +1 以获得有用的建议——我喜欢你的措辞“回答补充”,非常温和。 :)
【解决方案3】:

对于任何可能正在阅读本文的人的最后一个建议...确保您的 .htaccess 文件以 Unix 格式保存,而不是 DOS。对我来说,我发现使用 Notepad++ 最简单。

在 Notepad++ 中,转到编辑 -> EOL 转换 -> Unix/OSX。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2017-03-06
    • 2019-04-12
    • 2013-05-20
    • 2021-04-19
    • 2013-01-07
    相关资源
    最近更新 更多