利用.htaccess文件将多个子域名解析至对应的子目录

查看源码

对于不支持子域名解析但是支持 .htaccess 的主机来说,这个功能就非常有用了

假设有主域名 ppios.com,子域名 yspx.ppios.com 和 ask.ppios.com,设置结果为访问 repo.ppios.com 时自动解析到 www.ppios.com/repo/ 文件夹中

下面是详细设置:
在根目录下的 .htaccess

RewriteEngine On
RewriteCond %{HTTP_HOST} ^((www|yspx).)?ppios.com$
RewriteCond %{REQUEST_URI} !^/yspx/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /yspx/$1
RewriteCond %{HTTP_HOST} ^((www|yspx).)?ppios.com$
RewriteRule ^(/)?$ yspx/index.html [L]

RewriteCond %{HTTP_HOST} ^((www|repo).)?ppios.com$
RewriteCond %{REQUEST_URI} !^/repo/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /repo/$1
RewriteCond %{HTTP_HOST} ^((www|repo).)?ppios.com$
RewriteRule ^(/)?$ repo/ [L]


注:标红区域请自行替换成自己的域名(若不是.com则需同时替换.com部分),绿色区域请自行替换为自己的子域名(子目录名),蓝色区域请自行设置子目录对应的首页类型,比如 repo 文件夹下主页是 index.html,则设置为 repo/index.html,也可不设置,只写 repo/

在对应子目录下的 .htaccess

RewriteEngine On
RewriteBase /repo
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /repo/ [L]
注:绿色部分自行替换为对应的子目录名,要在每一个子目录下都放置对应的 .htaccess 文件
这样就完成了通过设置 .htaccess 来将子域名解析到子目录的工作