WordPress

使用.htaccess 实现一个主机添加多个独立网站

如果你的主机有1G的空间,可以绑定20个域名,只用来放一个网站会不会太浪费啦,那是肯定很浪费的。接下来我们来看看怎么通过htaccess,让不同域名绑定不同子目录,从而实现同一个主机建立多个独立网站。

.htacces 真的很强大,我们使用.htaccess写入特定规则,就可以一个空间放多个网站,让不同域名进入绑定不同的文件夹,以下范例:

比如我们要根目录中实现以下的域名绑定子目录结构:

|----.htaccess文件

|----blog目录(绑定域名uoo2.com/www.uoo2.com)

|--------.htaccess文件

|----aaa目录(绑定域名aaa.com)

|--------.htaccess文件

那么需要在网站根目录的.htaccess文件中添加以下内容:

  1. RewriteEngine On  
  2. RewriteBase /</code>  
  3.   
  4. RewriteCond %{HTTP_HOST} ^(www\.)?uoo2\.com$ [NC]  
  5. RewriteCond %{REQUEST_URI} !^/blog/  
  6. RewriteCond %{REQUEST_FILENAME} !-f  
  7. RewriteCond %{REQUEST_FILENAME} !-d  
  8. RewriteRule ^(.*)$ blog/$1  
  9. RewriteRule ^(/)?$ blog/index.php [L]  

这样我们就已经把www.uoo2.com这个域名绑定到了blog这个子目录上面,相当于blog就是一个独立域名主机服务器。aaa.com同理。
但是如果只到这里,你会发现,当你通过aaa.com/blog/的方式也可以访问www.uoo2.com里面的内容,这当然是我们不想看到的。也不利于seo。怎么样来防止其他域名访问www.uoo2.com中的内容呢?接下来看下面

在blog目录中的.htaccess添加以下内容:

  1. RewriteEngine On  
  2. # 禁止通过非本网站域名访问  
  3. RewriteCond %{HTTP_HOST} !^(www.)?uoo2.com$ [NC]  
  4. RewriteRule ^.*$ [L,r=404]  

通过以上两个步骤,我们已经成功的实现了域名uoo2.com绑定到blog子目录中,aaa.com同理,并且域名与域名间相互独立访问。

如果绑定多个域名到子目录,那么规则以此类推以上内容后重复即可!

亲自测试,正常可用!需要子目录绑定的空间推荐此办法!

  1. <h2 class="icon-logo">文件代码解释:</h2>  
  2. <ul style="font: 14px/2.3em Providence, Arial, 'Microsoft YaHei', Helvetica, sans-serif; list-style: none; margin: 20px; padding: 0px 0px 0px 30px; border: 1px solid #e2e2e2; color: #555555; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; widows: 1; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-stroke-width: 0px;">  
  3.     <li>【RewriteEngine On】  
  4. 表示重写引擎开,关闭off,作用就是方便的开启或关闭以下的语句,这样就不需要一条一条的注释语句了。</li>  
  5.     <li>【RewriteCond %{HTTP_HOST} ^(www\.)?uoo2\.com$ [NC]】  
  6. 表示重写条件,前面%{HTTP_HOST}表示当前访问的网址,只是指前缀部分,格式是www.uoo2.com括“http://”和“/”,^表 示字符串开始,$表示字符串结尾,\.表示转义的. ,如果不转义也行,推荐转义,防止有些服务器不支持,?表示前面括号www\.出现0次或1次,这句规则的意思就是如果访问的网址是uoo2.com或者 www.uoo2.com就执行以下的语句,不符合就跳过。还有,不能保证每个人输入的网址都是小写的,如果输入大写的呢,linux系统是区分大小写的,所以应该在RewriteCond后添加[NC]忽略大小写的。</li>  
  7.     <li>【RewriteCond %{REQUEST_URI} !^/blog/】  
  8. 也是重写条件,%{REQUEST_URI}表示访问的相对地址,就是相对根目录的地址,就是域名/后面的成分,格式上包括最前面的“/”,!表示非,这句语句表示访问的地址不以/blog/开头,只是开头^,没有结尾$</li>  
  9.     <li>【RewriteCond %{REQUEST_FILENAME} !-f】  
  10. 【RewriteCond %{REQUEST_FILENAME} !-d】  
  11. 这两句语句的意思是请求的文件或路径是不存在的,如果文件或路径存在将返回已经存在的文件或路径</li>  
  12.     <li>【RewriteRule ^(.*)$ blog/$1】  
  13. 表示重写规则,最重要的部分,意思是当上面的RewriteCond条件都满足的时候,将会执行此重写规则,^(.*)$是一个正则表达的 匹配,匹配的是当前请求的URL,^(.*)$意思是匹配当前URL任意字符,.表示任意单个字符,*表示匹配0次或N次(N&gt;0),后面 /blog/$1是重写成分,意思是将前面匹配的字符重写成/blog/$1,这个$1表示反向匹配,引用的是前面第一个圆括号的成分,即^(.*)$中 的.* 。</li>  
  14. </ul>  

历史上的今天:

(0)

本文由 优次元 作者:芈悦 发表,转载请注明来源!

关键词:,

热评文章

评论:

1 条评论,访客:1 条,博主:0 条
  1. 梅塔特隆立方体
    梅塔特隆立方体发布于: 

    写的不错,我捣鼓了两天没有成功,要是提前看到你这篇文章就好了。

发表评论