【问题标题】:Redirect 301 not working for all pages on Apache重定向 301 不适用于 Apache 上的所有页面
【发布时间】:2014-08-02 22:12:06
【问题描述】:

我已经查看了许多如何在 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真的可以这么复杂吗?

【问题讨论】:

  • 这是唯一规则还是您有更多规则?
  • 是的,还有一些其他的 RewriteRules 以相同的方式存在,还有一个规则可以将索引页面重定向到新域。
  • 您可以编辑您的问题并发布您的完整 .htaccess 吗?
  • @anubhava 该问题现在包含完整的 htaccess 文件。感谢您的观看!
  • 这里也有人问过这个问题:webmasters.stackexchange.com/questions/64841/…

标签: apache .htaccess redirect


【解决方案1】:

你能试试这个规则,看看它的表现如何:

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 中的唯一规则,那么我怀疑您的 Apache 配置中有一些规则。
  • 好吧,old.com 域是其他域的附加域。 “主”域的 .htaccess 对行为有影响吗?
  • 不应该,因为我们有RewriteCond %{HTTP_HOST} ^(www\.)?old\.com$ [NC] 条件
  • 但是什么样的配置可以防止页面被重定向,我在哪里可以找到配置文件?也许也在cPanel设置中的某个地方?不幸的是,我不是 Apache 专家...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多