我想为博客迁移实施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
这可以帮到你吗?
答案 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重定向,因此可能会导致测试出现问题。