Rails 5.1路由配置:主域名博客链接重定向至子域名问题
解决Rails 5.1主域名博客路由重定向到子域名时缺失/blog路径的问题
你的问题根源在于通配符路由中%{all}捕获的是blog/之后的部分内容,而你当前的重定向路径直接使用了这部分内容,导致丢失了/blog前缀。我们只需要调整重定向的path参数,手动补上这个前缀即可。
正确的路由配置
Rails.application.routes.draw do # 处理带路径的博客文章请求,保留/blog前缀 get 'blog/*all' => redirect(subdomain: 'blog', path: '/blog/%{all}', protocol: 'https') # 处理/blog根路径的重定向,统一跳转到子域名的根 get '/blog' => redirect(subdomain: 'blog', path: '/', protocol: 'https') end
配置说明
对于
blog/*all的路由:subdomain: 'blog'将请求切换到blog子域名path: '/blog/%{all}'把捕获到的all内容(也就是blog/之后的路径片段)拼在/blog/后面,完整保留原有的路径结构protocol: 'https'强制使用HTTPS协议,避免出现你描述的HTTP跳转问题
对于
/blog根路径:- 直接重定向到
blog.dolgins.com的根目录(如果你的子域名博客根路径本身就是/blog,也可以把path设为/blog)
- 直接重定向到
这样测试原地址https://www.dolgins.com/blog/2018/5/22/unique-hand-crafted-mosaic-jewelry-at-richard-dolgin-private-jeweler时,就会正确重定向到https://blog.dolgins.com/blog/2018/5/22/unique-hand-crafted-mosaic-jewelry-at-richard-dolgin-private-jeweler,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Joe D
相关产品推荐
相关产品推荐

