301博客迁移的重定向规则

时间:2017-10-10 15:26:50

标签: .htaccess redirect

我想为博客迁移实施3个重定向规则,其中每个页面都将转移到子文件夹结构。它目前位于子域。

我真的无法搞砸这个,并且想确保我为3种类型的现有网址制定正确的通用规则:

主页

电流:

https://blog.lang.example.com

目标:

https://www.example.com/lang-country/news/

分类

电流:

https://blog.lang.example.com/category/category-name

目标:

https://www.example.com/lang-country/news/category/category-name

发布

电流:

https://blog.lang.example.com/yyy/mm/dd/article-name

目标:

https://www.example.com/lang-country/news/yyy/mm/dd/article-name

这可以帮到你吗?

1 个答案:

答案 0 :(得分:1)

除非您有其他不希望被重定向的网址,否则您可以通过子网域文档根目录中.htaccess文件顶部附近的单个重定向执行所需的操作。

例如:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^blog\.([^.]+)\.example\.com [NC]
RewriteRule (.*) https://www.example.com/%1-country/news/$1 [R,L]

其中%1是对请求主机中 lang 子域的反向引用。

但是,您仍然遇到目标网址中country应该来自哪里的问题,因为源URL中不存在此问题。您需要将其默认为某些内容,或者根据语言实现某种查找。如果您想在RewriteMap中执行此操作,则需要服务器配置访问权限(以配置.htaccess)。或者,您完全在服务器端脚本(例如PHP)中实现此重定向。

请注意,这是一个302(临时)重定向。只有在测试一切正常后才能将其更改为301(永久)重定向(如果需要301)。浏览器会严重缓存301重定向,因此可能会导致测试出现问题。