我确定我忽视了一些愚蠢的事情,但这是我第一次需要重定向。
我正在尝试使用htaccess文件将旧页面重定向到新网站的相应页面。
HTAccess内容如下:
<head>
</head>
Redirect 301 http://www.metalsetinc.com/about_us.html http://www.metalsetinc.com/about.html
我在重定向下面有一个空行。
原始页面文件是否需要保留在服务器上才能使重定向生效?我目前已将其移至较旧版本的文件夹。
使用这种格式,当我转到旧页面时,我只是收到404错误。
我错过了什么?
答案 0 :(得分:1)
.htaccess
文件应该具有该名称(您提到 HTAccess )例如,使用mod-rewrite,它非常灵活,以后您可能需要更复杂的规则:
RewriteEngine On
RewriteRule ^about_us.html about.html [L,R=301]
这假设mod_rewrite phpinfo();
输出中已安装模块的列表
默认情况下,不为htaccess文件启用mod_rewrite。如果您要管理自己的服务器,请打开httpd.conf
并确保webroot目录块包含以下行之一:AllowOverride FileInfo
或AllowOverride 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。