Apache:重定向子目录上的所有点击(301)吗?

Apache:重定向子目录上的所有点击(301)吗?

这可能是个简单的问题,但我似乎无法弄清楚:我最近从头创建了一个新网站来替换旧网站。旧网站的 SEO 排名很高,这显然是我想要保留的。

由于新网站也有新结构,因此我完全删除了旧网站/结构中的一些目录。但是,有很多外部链接指向这些目录,或者更具体地说是旧目录中的文件。所以我的问题归结为:如何重定向对某些子目录中文件的所有/任何点击?

例如:

www.mydomain.com/oldsubdirectory/somefile1.file --> mydomain.com/newdirectory www.mydomain.com/oldsubdirectory/somefile2.anothertypeoffile --> mydomain.com/newdirectory www.mydomain.com/oldsubdirectory/somefile3.fileofsometype --> mydomain.com/newdirectory

答案1

像这样的事情就可以解决问题:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.mydomain.com$ [NC]
RewriteRule ^/oldsubdirectory/somefile1.file$ http://mydomain.com/newdirectory [L,R=301]
RewriteRule ^/oldsubdirectory/somefile2.anothertypeoffile$ http://mydomain.com/newdirectory [L,R=301]

但是,该RewriteCond语句使这些重写仅适用于 www.mydomain.com,因此如果有人访问 mydomain.com/oldsubdirectory/somefile1.file,它将不会被重写。您可以尝试使用和不使用 RewriteCond 来查看哪种方法最适合您。

如果您希望它重定向到新目录中的同一个文件,您必须指定文件名(或将其与正则表达式匹配然后稍后调用它),例如:

RewriteRule ^/oldsubdirectory/(somefile1.file)$ http://mydomain.com/newdirectory/$1 [L,R=301]

答案2

您可以按照@Mattias的建议使用重写引擎执行重写规则,也可以使用更简单的形式,redirect permanent <old url> <new url>请访问httpd.apache.org了解更多信息。那里的信息写得非常简单。而使用永久重定向则无需学习,只需使用它即可。有数百个关于apache httpd中url重写的教程。谷歌一下

相关内容