首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将旧网站迁移到新域

将旧网站迁移到新域
EN

Stack Overflow用户
提问于 2018-01-23 07:39:01
回答 1查看 49关注 0票数 0

要求

旧域: abc.com

新域: def.com

我希望abc.com/loadsite.action?site=eu的请求被重定向到def.com/eu,但同时,我想确保如果新域名出了问题,用户仍然可以通过某种方式使用旧域(可能通过在URL中添加/old,able .com/ old /loadsite.com?site=eu)。

目前,我的vhost配置如下所示。它为选定的市场重定向到def.com,但没有后备配置。

代码语言:javascript
复制
Listen 12567 NameVirtualHost *:12567
ServerName abc.com ProxyPreserveHost On
RewriteEngine On
RewriteCond %{QUERY_STRING} (?:^|&)site=(eu) [NC,OR]
RewriteCond %{QUERY_STRING} (?:^|&)site=(in) [NC,OR]
RewriteCond %{QUERY_STRING} (?:^|&)site=(jp) [NC]
RewriteRule ^/?loadsite$ http://def.com/%1? [R=301,L,NC]

如何在不进入循环的情况下将abc.com/old/loadsite.action?site=eu重定向到abc.com/loadsite.action?site=eu

这里的任何线索都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-23 08:33:14

像这样的事情应该有效:

代码语言:javascript
复制
RewriteCond %{THE_REQUEST} !\s/old/
RewriteCond %{QUERY_STRING} (?:^|&)site=(eu) [NC,OR]
RewriteCond %{QUERY_STRING} (?:^|&)site=(in) [NC,OR]
RewriteCond %{QUERY_STRING} (?:^|&)site=(jp) [NC]
RewriteRule ^/?loadsite$ http://def.com/%1? [R=301,L,NC]

RewriteRule ^/?old/(.*) /$1 [L,NC]

最后一个指令将简单地(内部)将abc.com/old/loadsite.action?site=eu重写为abc.com/loadsite.action?site=eu。由于%{THE_REQUEST}包含浏览器发送到服务器的完整HTTP请求行,即使在此内部重写之后,我们仍然可以使用该变量来防止对新站点的重写。

因此,RewriteCond %{THE_REQUEST} !\s/old/添加了另一个条件:如果原始请求以/old/开头,则不要重写新站点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48396453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档