使用rewrite实现虚拟主机下不同域名绑定不同目录

      根据题目就可以知道我们要做一个很好玩的事情了。像博主这等屌丝没钱vps或者云服务器只能用便宜的或者免费的虚拟主机。而博主呢还是个域名控看见便宜的价格低的域名都想买买买。当然最贵的也就是买的jearyvon.com这个了吧。

好吧又扯远了。原因是博主以前都是使用sea 就是新浪云计算的服务器的因为博主是开发者每个月会送好多豆豆基本是都是免费使用而且数据库还很大,但是呢,前几天官方放出个消息说是全民免费,也就是取消开发者这一个概念。这让我很不开心。因为我部分demo 啦作品了什么的都是放在那上面的少说也有10多个。这是逼着我迁移,还好我领了个免费的万网的免费虚拟主机现在用着。

但是虚拟主机和服务器并不一样。不能修改apache配置文件,并不可以创建多个虚拟主机。

但是我有多个域名多个应用想使用一台虚拟主机怎么办呢?

那么终于说到正题了。

其实有好几种实现方式的。我这里列举下最常用的两种办法吧·

一个是:使用服务器语言自动判断。Referer_url 还有host_url并做出相应目录的重定向。

这个原理很就简单。

这里我用php写个最简单的demo

//获取当前的域名:
$host = $_SERVER['SERVER_NAME'];switch ($host)
{
case "a.com":
// 重定向
$url = $host.'/a/';
header("location: http://".$url);
break;
case "b.com":
// 重定向
$url = $host.'/b/';
header("location: http://".$url);
case "c.com":
// 重定向
$url = $host.'/c/';
header("location: http://".$url);
}

 

但是这样的方式并不好。因为并不能隐藏目录。

很容易暴露一些网站问题。

于是想到了大部分apache虚拟主机都是支持.htaccess的rewrite的所以使用这个肯定行。

于是就百度学习了是用方法。

修改根目录下.htaccess文件

 

 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.a\.com$ [NC]
RewriteRule ^(/)$/a/$  [L,R=301]
RewriteCond %{HTTP_HOST} ^((blog) \.)?vvwall\.com$
RewriteCond %{REQUEST_URI} !^/blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /blog/$1
RewriteCond %{HTTP_HOST} ^((www)\.)?vvwall\.com$
RewriteRule ^(/)?$ blog/index.php [L]

</IfModule>

 

 

 

通过上面设置就可以实现不同域名访问不同目录了。如果你还想隐藏目录怎么办呢?比如说

a.com/a/index.php

您想直接访问a.com就可以

只需要在

a目录下创建文件

输入以下内容

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /a/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

all right

这样的话就OK了

转载请注明出处。

我是一个快乐的小尾巴~~~

4条回应:“使用rewrite实现虚拟主机下不同域名绑定不同目录”

  1. nn说道:

    老大!isunday.top 备案成功了,赶紧换友链~

  2. Bubber说道:

    Way to go on this essya, helped a ton.

  3. 不锈钢网说道:

    不错的文章,内容惟妙惟肖.禁止此消息:nolinkok@163.com

发表评论