使用 301 重定向重定向 404 是将现有页面重定向到主页
Posted
技术标签:
【中文标题】使用 301 重定向重定向 404 是将现有页面重定向到主页【英文标题】:Redirecting 404 using 301 redirect is redirecting existing pages to Home page 【发布时间】:2017-08-07 09:04:44 【问题描述】:我刚刚重新开发了我的一个网站。结构发生了变化,因此我需要全局重定向当前仍在 Google 上排名的 旧的不存在 页面(大约 50 个页面),以重定向到我的新网站的 HOME PAGE .
结构基本上从页面发生了变化-示例:
www.website.com/page1.php
www.website.com/page2.htm
www.website.com/page3.php
...等等
到
www.website.com/page1/
www.website.com/page2/
www.website.com/page3/
...等等
经过一番谷歌搜索,我在 SO 上看到了这个 solution
当我添加时:
RewriteEngine on
RewriteCond %REQUEST_FILENAME !-f
RewriteRule . / [L,R=301]
到我的.htaccess
文件,不存在页面的重定向(到主页)有效 - 太好了!
但是现在我的新网站(存在)上的导航/侧面板中的每个链接也被重定向到主页。所以我无法浏览我的网站!
因此,例如,当我单击关于我们的链接 www.website.com/about-us/
或我的其他 50 个页面中的任何其他页面(无论它们的名称如何)时,上面的 301 重定向解决方案会不断将我重定向到主页(就好像这些页面不存在一样)。
我想全局重定向当前仍在 Google 上排名的 不存在的旧页面(大约 50 个页面)重定向到我的新网站的 主页 .. . 不是我网站的现有链接。
这是为什么?我认为使用 301 方法的 404 重定向只会针对不存在的页面。
我做错了什么吗?
【问题讨论】:
编写一个 404 页面并使用 .htacess 设置您的自定义 404 页面并在该页面上设置重定向到您喜欢的任何页面 什么是about-us
?是目录还是文件,还是about-us.php
?
@OlafDietsche ... 一个目录文件www.website.com/about-us/
,index.php 是/about-us/
目录中的默认页面
【参考方案1】:
要将 /page.php 重定向到 /page ,您可以使用以下命令:
RewriteEngine on
RewriteCond %ENV_REDIRECT_STATUS !200
RewriteRule ^(.+)\.php$ /$1 [L,R,NE]
您可以将 R 更改为 R=301 以使重定向永久化。
【讨论】:
我试图找出为什么导航中的新网站链接正在解析/重定向到带有RewriteEngine on RewriteCond %REQUEST_FILENAME !-f RewriteRule . / [L,R=301]
的主页
这是因为您的规则,因为它将除现有文件之外的所有内容都重写为 / 。
我也在谈论将 any 不存在的页面(仍然在 Google 上排名)全球重定向到我的主页......而不是 1 个特定页面。我真正的问题是我现有的网站链接不起作用(它们被视为不存在 - 请参阅我的帖子)
"它会将除现有文件之外的所有内容重写为 /" ...但我的问题是它也在重写现有文件【参考方案2】:
规则应用如下
-
检查
about-us
是否与模式 .
匹配,是的。
检查条件是否匹配,%REQUEST_FILENAME !-f
。它是一个目录,所以是的,它不是一个文件。
一切都匹配 -> 应用规则。
如果您不希望目录匹配,您可以这样说
RewriteCond %REQUEST_FILENAME !-d
所以完整的重写规则是
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . / [L,R]
当一切正常时,您可以将R
替换为R=301
(permanent redirect)。 从不用R=301
测试。
【讨论】:
以上是关于使用 301 重定向重定向 404 是将现有页面重定向到主页的主要内容,如果未能解决你的问题,请参考以下文章