.htaccess中的重定向301导致500服务器错误(重定向到非URL)

时间:2011-03-16 09:54:41

标签: .htaccess apache2

有这样的错误。

Redirect 301规则添加到.htaccess文件时,如:

Redirect 301 "/page1.html" "/dir1/"

我的网站因500服务器错误而失败,在apache错误日志中出现此错误:

[Wed Mar 16 11:08:52 2011] [alert] [client 127.0.0.1] /home/htdocs/site.com/www/.htaccess: Redirect to non-URL

安装了Mod重写,也试图提供没有引号的网址。

在生产服务器上,这个.htaccess工作正常,但在本地导致麻烦

请提出任何想法)


此规则有效

Redirect 301 "/page1.html" "http://www.site.com/dir1/"

但是我需要一种方法来提供相对路径而不是完整的URL(生产服务器以这种方式工作)

4 个答案:

答案 0 :(得分:8)

将所有Redirect 301规则更改为:

RewriteRule ^/page1.html$ /dir1/page.html [R=301,L]

现在正在工作。但它如何在生产中发挥作用?

答案 1 :(得分:1)

对我来说,我有完全相同的问题。在“/ mypage”前添加“http://domain.com”工作;我还在测试,没有像我的生产服务器上那样工作。所以我的本地测试环境中的.htaccess是这样的:

BROKEN: 重定向301 / mypage / directory1 /子目录/ mypage /

FIXED: 重定向301 http://mydomain.com/mypage http://mydomain.com/directory1/sub-directory/mypage/

答案 2 :(得分:1)

我有同样的问题,对我而言,这也不起作用:

RewriteRule ^/page1.html$ /dir1/page.html [R=301,L]

对我有用的是删除前导斜杠,并添加带有?的软拖尾斜杠,如下所示:

RewriteRule ^(page1.html)/?$ dir1/page.html [R=301,L]

答案 3 :(得分:0)

请尝试一下,它可以正常工作。

 <IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  Redirect 301 /our_clients/nike /project/nike-nofyme-campaigns
 </IfModule>