通过 .htaccess 文件将域名解析到多个目录

对于一台主机而言,同时搭建两个网站可以更好的利用主机的剩余资源,但是,有些主机供应商并不提供子域名解析,或者需要解析到不同的域名,对于这种情况,可以通过建立 .htaccess 文件加入 rewrite 函数的方法实现,本方法仅适用基于 Apache 搭建的服务器,基于 nginx 搭建的服务器需要在 nginx.conf 中添加 rewrite 函数(之后另行介绍)。

假设有两个域名 www.a.comwww.b.com ,分别需要解析到主机 /a 和 /b 目录。

则首先需要在 / 目录建立 .htaccess 文件,内容如下:

# 开启Rewrite功能
RewriteEngine On
# 将www.a.com解析到/a目录
RewriteCond %{HTTP_HOST} ^(www.)?a.com$
RewriteCond %{REQUEST_URI} !^/a/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /a/$1
RewriteCond %{HTTP_HOST} ^(www.)?a.com$
RewriteRule ^(/)?$ a/ [L]
# 将www.b.com解析到/b目录
RewriteCond %{HTTP_HOST} ^(www.)?b.com$ 
RewriteCond %{REQUEST_URI} !^/b/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /b/$1 
RewriteCond %{HTTP_HOST} ^(www.)?b.com$ 
RewriteRule ^(/)?$ b/ [L]

根据具体需要替换上面的域名和目录。

之后分别在两个子目录 /a 和 /b 建立 .htaccess 文件,内容分别如下:

/a/.htaccess

RewriteEngine On
RewriteBase /a
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /a/ [L]

/b/.htaccess

RewriteEngine On
RewriteBase /b
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /b/ [L]

完成以上步骤,则可以实现 www.a.com 访问 /a 而 www.b.com 访问 /b 的功能。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,849评论 24 1,002
  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 81,389评论 21 356
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 2,124评论 0 9
  • 重写规则 【重写规则的作用范围】 可以使用在Apache主配置文件httpd.conf中 可以使用在httpd.c...
    桖辶殇阅读 1,742评论 0 0
  • nginx重写规则 nginx rewrite 正则表达式匹配 大小写匹配 ~ 为区分大小写匹配 ~* 为不区分大...
    桖辶殇阅读 5,625评论 0 2