.htaccess 在保留路径的同时使用新域屏蔽子域
我很久以前就拥有一个域名了,只是屏蔽了名称:.htaccess 在保留路径的同时使用新域屏蔽子域,.htaccess,redirect,dns,subdomain,shared-hosting,.htaccess,Redirect,Dns,Subdomain,Shared Hosting,我很久以前就拥有一个域名了,只是屏蔽了名称: http://mydomain.com 后来,我开始在某个项目中使用此域上的子域 http://subdomain.mydomain.com 这些项目不断发展,现在我有了一个 http://subdomain.mydomain.com/project1 http://subdomain.mydomain.com/project2 http://subdomain.mydomain.com/project3/subproject1 http://s
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.如果有人访问我的旧域,请将其重定向到新的命名结构。i、 e.如果有人加载<代码>http://subdomain.mydomain.com/project2应将它们重定向到http://shortdomain.com/project2
http://shortdomain.com/project2
这实际上应该加载http://subdomain.mydomain.com/project2
shortdomain.com
,则请求将被发送到shortdomain.com
,并且与subdomain.mydomain.com
无关。如果重定向回subdomain.mydomain.com
,则浏览器中的位置栏也将更改
您真正想要做的是将shortdomain.com
指向subdomain.mydomain.com
所在的服务器和文档根目录。然后使用此选项重定向(在htaccess文件或服务器配置中):
如果出于任何荒谬的原因,您无法将shortdomain.com
DNS指向为subdomain.mydomain.com
提供服务的同一Web服务器,或者无法将该Web服务器设置为接受对shortdomain.com
主机的请求,则需要设置代理服务器。它的工作原理如下:
2台Web服务器,服务器A(主机为subdomain.domain.com)和服务器B(主机为shortdomain.com)
http://subdomain.mydomain.com/project3/subproject1
http://shortdomain.com/project3/subproject1
我对这两个域都有完全的DNS控制权
通过完全控制,我假设您可以在shortdomain.com的Apache web服务器上启用mod_proxy
,一旦这样设置完成
在subdomain.mydomain.com
上启用mod\u rewrite
并将此规则放置在Apache config
或DOCUMENT\u ROOT/.htaccess
中:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain\.mydomain\.com$ [NC]
RewriteRule ^ http://shortdomain.com%{REQUEST_URI} [L,R=301]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^shortdomain\.com$ [NC]
RewriteRule ^ http://subdomain.mydomain.com%{REQUEST_URI} [L,P]
在shortdomain.com
上启用mod_proxy
,mod_rewrite
并将此规则放入Apache config
或DOCUMENT\u ROOT/.htaccess
:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain\.mydomain\.com$ [NC]
RewriteRule ^ http://shortdomain.com%{REQUEST_URI} [L,R=301]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^shortdomain\.com$ [NC]
RewriteRule ^ http://subdomain.mydomain.com%{REQUEST_URI} [L,P]
霍斯盖特也花了一些时间才弄明白这一点。这很有效。但并非完全如此,因为这些项目中的每一个都可能有自己的.htaccess,也可能没有。几乎把一切都搞砸了。仍在寻找稳定的解决方案。