重定向301不适用于Apache上的所有页面

重定向301不适用于Apache上的所有页面,apache,.htaccess,redirect,Apache,.htaccess,Redirect,我已经看过很多关于如何在Apache上设置301重定向的示例和教程,但我不明白为什么只有第二个可以工作: Options +FollowSymlinks RewriteEngine on #doesn't work: RewriteCond %{HTTP_HOST} ^old.com$ [OR] RewriteCond %{HTTP_HOST} ^www.old.com$ RewriteRule ^page-still-exists.htm$ "http://www.new.com/new-t

我已经看过很多关于如何在Apache上设置301重定向的示例和教程,但我不明白为什么只有第二个可以工作:

Options +FollowSymlinks
RewriteEngine on

#doesn't work:
RewriteCond %{HTTP_HOST} ^old.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.old.com$
RewriteRule ^page-still-exists.htm$ "http://www.new.com/new-target-page.htm" [R=301,L]

#works:
RewriteCond %{HTTP_HOST} ^old.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.old.com$
RewriteRule ^page-does-no-longer-exist.htm$ "http://www.new.com/" [R=301,L]

#works:
RewriteCond %{HTTP_HOST} ^old.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.old.com$
RewriteRule ^folder/otherpage.htm$ "http://www.new.com/" [R=301,L]

#works:
RewriteCond %{HTTP_HOST} ^old.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.old.com$
RewriteRule ^/?$ "http://www.new.com/" [R=301,L]

#doesn't work:
RewriteCond %{HTTP_HOST} ^old.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.old.com$
RewriteRule ^somepage.htm$ "http://www.old.com/some-page.htm" [R=301,L]
我不知道为什么只有第二个在工作。我能看到的唯一区别是,在第二种情况下,旧页面不再存在于旧域中。但是,每当我想将任何仍然存在的页面从旧域重定向到新域时,旧域上的页面仍然被使用

非常感谢您的任何意见,因为这正慢慢让我发疯:

编辑:我添加了完整的htaccess文件

编辑2:所以我删除了几乎所有的重定向,目前我的htaccess如下所示:

Options +FollowSymlinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^old\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.old\.com$
RewriteRule ^(.*)$ "http\:\/\/www\.new\.com\/$1" [R=301,L]

唯一有效的重定向是从old.com到new.com的简单重定向。像old.com/page.htm这样的重定向到new.com甚至new.com/page.htm都不起作用。实际上我真的不知道这个重定向是从哪里来的。。。301真的会这么复杂吗?

你能试试这个规则,看看它是如何工作的吗:

Options +FollowSymlinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www\.)?old\.com$ [NC]
RewriteRule ^page-still-exists\.htm$ http://www.new.com/new-target-page.htm [R=301,L,NC]

这是唯一的规则还是您有更多的规则?是的,还有其他一些重写规则以相同的方式存在,还有一个规则用于将索引页重定向到新域。您可以编辑您的问题并发布完整的.htaccess吗?@anubhava该问题现在包含完整的htaccess文件。谢谢你看!这里也有人问过这样一个问题:非同寻常的运气不好。旧页面仍然没有重定向到新域:如果这是root.htaccess中的唯一规则,那么我怀疑您的Apache配置中有一些规则。嗯,旧的.com域是其他域的附加域。主域的.htaccess是否对行为有任何影响?不,不应该,因为我们已经重写了cond%{HTTP_HOST}^www\.?old\.com$[NC]条件。但是什么样的配置可以阻止页面重定向,我在哪里可以找到配置文件?也许也在cPanel设置中的某个地方?不幸的是我不是Apache专家。。。