我拥有一个域名,只是掩盖了名称:
http://mydomain.com
后来我开始在这个域上使用子域进行某个项目。
http://subdomain.mydomain.com
那些项目增长了,现在我有了像
这样的结构http://subdomain.mydomain.com/project1
http://subdomain.mydomain.com/project2
http://subdomain.mydomain.com/project3/subproject1
http://subdomain.mydomain.com/project3/subproject2
http://subdomain.mydomain.com/project3/subproject3
http://subdomain.mydomain.com/project4
....
etc.
现在我买了一个新域名(shortdomain.com),我计划不移动任何内容,但所有内容都应该通过重定向访问,所以一切都看起来像:
http://shortdomain.com
http://shortdomain.com/project1
http://shortdomain.com/project2
http://shortdomain.com/project3/subproject1
http://shortdomain.com/project3/subproject2
http://shortdomain.com/project3/subproject3
http://shortdomain.com/project4
...
etc.
所以基本上我需要做两件事:
1.如果有人访问我的旧域,请将它们重定向到新的命名结构。即如果有人加载http://subdomain.mydomain.com/project2
,则应将其重定向到http://shortdomain.com/project2
http://shortdomain.com/project2
时,这应该实际加载http://subdomain.mydomain.com/project2
所以我不会手动迁移其他数据的项目,代码和GB。我认为这可能仅通过智能重定向来实现。
仅供参考: 1.我对这两个域都有完整的DNS控制权 我在hostgator上托管 3.我在第一个域使用cloudflare并希望继续使用它
答案 0 :(得分:0)
我认为这可能仅通过智能重定向来实现。
不,重定向会更改浏览器位置栏中的内容。如果您重定向到shortdomain.com
,则该请求将发送至shortdomain.com
,并且与subdomain.mydomain.com
无关。如果您重定向回subdomain.mydomain.com
,则浏览器中的位置栏也会发生变化。
您真正想要做的是将shortdomain.com
指向同一服务器和subdomain.mydomain.com
所在的文档根目录。然后使用它来重定向(在htaccess文件或服务器配置中):
RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://shortdomain.com/$1 [L,R=301]
如果出于任何荒谬的原因,您无法将shortdomain.com
DNS指向提供subdomain.mydomain.com
的同一网络服务器,或无法设置该网络服务器接受shortdomain.com
的请求主机,您需要设置代理服务器。它会像这样工作:
2个Web服务器,服务器A(托管subdomain.domain.com)和服务器B(托管shortdomain.com)
http://subdomain.mydomain.com/project3/subproject1
http://shortdomain.com/project3/subproject1
正如您所看到的,这是一种极其无效的解决方案。您的托管服务也很可能不允许您设置代理服务器。
答案 1 :(得分:0)
I have full DNS control of both the domains
完全控制后,我假设你也可以在mod_proxy
的Apache网络服务器上启用shortdomain.com
。完成后,将这一切设置为这样。
在subdomain.mydomain.com
启用mod_rewrite
并将此规则放入Apache config
或DOCUMENT_ROOT/.htaccess
:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain\.mydomain\.com$ [NC]
RewriteRule ^ http://shortdomain.com%{REQUEST_URI} [L,R=301]
在shortdomain.com
启用mod_proxy
,mod_rewrite
并将此规则放入Apache config
或DOCUMENT_ROOT/.htaccess
:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^shortdomain\.com$ [NC]
RewriteRule ^ http://subdomain.mydomain.com%{REQUEST_URI} [L,P]