经常有这样的情况发生:我们有一台Root服务器,绑定了域名 abc.com,如果这时候还有若干子服务器,服务器域名需要设为 abc.com/dir1 , abc.com/dir2…….. 由于子目录不在根服务器上,又需要服务器域名统一,怎么办呢?
这个功能能够通过把 子域名重定向到虚拟目录来解决。具体操作如下:
一、设置一个子域名 dir1.abc.com,指向此子服务器。
二、在子服务器上设定.htaccess,把域名重新rewrite为子目录形式:
RewriteEngine on RewriteCond %{HTTP_HOST} dir1.abc\.com [NC] RewriteCond %{REQUEST_URI} ^/$ RewriteRule ^(.*)$ /dir1/$1 [L]
对于 Nginx 主机,则需要这么处理:
server {
server_name sub.domain.com;
rewrite ^ $scheme://www.domain.com/sub$1 permanent;
}
多级子目录:
rewrite ^(.*)$ $scheme://www.domain.com/sub$1 permanent;
或
return 301 $scheme://www.domain.com/sub$request_uri;
参考:https://serverfault.com/questions/867736/rewrite-redirect-subdomain-urls-to-subdirectory-urls
三、此时服务器把 dir1.abc.com 的url 重写为 abc.com/dir1/url 形式。功能实现。