我刚刚重新开发了我的一个网站。结构发生了变化,因此我需要全局重定向目前仍在Google上排名的旧的不存在的页面(50个左右的页面),以重定向到我的新网站的主页
结构基本上已从页面改变 - 例如:
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重定向只会针对不存在的页面。
我做错了吗?
答案 0 :(得分:2)
要将 /page.php 重定向到 / page ,您可以使用以下内容:
RewriteEngine on
RewriteCond %{ENV_REDIRECT_STATUS} !200
RewriteRule ^(.+)\.php$ /$1 [L,R,NE]
您可以将R更改为R = 301以使重定向成为永久性。
答案 1 :(得分:0)
规则应用如下
about-us
是否与模式.
匹配,是的。{/ li>
%{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
进行测试。