单个页面301重定向不重定向?

时间:2014-07-10 01:56:27

标签: html apache .htaccess redirect

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

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

HTAccess内容如下:

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

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

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

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

我错过了什么?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

补充@ zx81answer,

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

  

重定向[状态]网址路径网址

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

所以这应该更好:

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

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

答案 2 :(得分:0)

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

在Notepad ++中,转到EDIT - &gt; EOL转换 - &gt;的Unix / OSX。