2014-07-10 120 views
1

我确定我忽略了一些愚蠢的东西,但这是我第一次需要重定向。单页重定向不重定向?

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

.htaccess的内容如下:

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

我已经得到了重定向下一个空行。

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

使用这种格式,我只是在进入旧页面时发生404错误。

我错过了什么?

+1

不要把HTML放在你的.htaccess中 – danronmoon

回答

1
  • .htaccess文件应该有一个确切的名字(你提到的.htaccess
  • 它不应该包含任何HTML,为Apache只是说明。

例如,与国防部重写,这是非常灵活的,你以后可能会需要更复杂的规则:

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

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

+0

我没有服务器访问权限,而现在我只是在学习一些.htaccess功能。问题的一部分是我有名为htaccess的文件 - 不是.htaccess。谢谢! – sforcash

+0

不客气,很高兴帮助。 :) – zx81

1

在补充@ zx81answer,

您可以使用Redirect指令,从mod_alias中,但作为在DOC规定的格式是:

重定向[状态] URL路径URL

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

所以这应该更好的工作:

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

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

+0

“302第一”的建议是有道理的。一切都在工作。谢谢! – sforcash

+0

+1有用的建议 - 我喜欢你的措辞“答案补充”,非常温和。 :) – zx81

0

对于任何可能正在阅读此内容的人而言,最后一项建议是确保您的。htaccess文件保存为Unix格式,而不是DOS。对我而言,我发现使用Notepad ++最简单。

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