可能是一个简单的问题,但我似乎无法解决:我最近从头开始创build一个新的网站,以取代旧的网站。 旧网站有一个很好的SEO排名,这显然是我想保持的。
由于新网站也有一个新的结构,有一些来自旧网站/结构的目录,我已经完全放弃了。 然而,有相当多的指向这些目录的外部链接,或者更具体地说是旧目录中的文件。 所以我的问题归结为:如何redirect所有/任何命中某些子目录中的文件?
例如:
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
像这样的事情会做的伎俩:
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,看看最适合你的是什么。
如果您希望将其redirect到newdirectory中的同一个文件,则必须指定文件名(或者将其与正则expression式匹配,然后再调用它),例如:
RewriteRule ^/oldsubdirectory/(somefile1.file)$ http://mydomain.com/newdirectory/$1 [L,R=301]
您可以使用@Mattiasbuild议的重写引擎来执行重写规则,也可以使用更简单的表单redirect permanent <old url> <new url>阅读httpd.apache.org以获取更多信息。 这里的信息是以非常简单的方式写成的。 虽然redirect永久没有什么可学习的只是使用它。 在httpd中有几百个关于url重写的教程。 去谷歌上查询