apache 二级域名解析实现方法

代码如下:

RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1

其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
然后,在这个所在路径的目录下创建一个文件: vhost.map
内容为:


代码如下:

www.domain.com /usr/local/www/data-dist/domain
bbs.domain.com /usr/local/www/data-dist/bbs
anyname.domain.com /usr/local/www/data-dist/anyname

以上部分都是:” 域名+空格+绝对路径” 的形式。

最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
domain , bbs , anyname 等等,理论上可以无限。

这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。

第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
第二步:打配置文件尾部加上
RewriteEngine on
RewriteMap lowercase int:tolower
#定义映像文件
RewriteMap vhost txt:/apache/vhost/vhost.map
#处理变名
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
这里做基于文件的重新映射
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1
RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/cgi-bin/$1

注意:vhost.map文件是域名和空间映像的文件,格式如下: 
http://www.abc.com/vhostusr/www.abc.com
http://www.xyz.com/vhostuser/www.xyz.com
http://www.cccbbbbs.net/vhostuser/www.ccbbbb.net
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
==============================================
方法二、

代码如下:

rewriteengine on
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
rewriterule ([^.]+)\.域名\.com(.*) /$1$2

其他配置文件

接着在DNS中开设一个泛解析到对应的IP地址。
就可以实现下面的方案。

域名:domain.com
绝对路径:/home/domain.com/
www.domain.com 自动解析到 /home/domain.com/www/
abc.domain.com 自动解析到 /home/domain.com/abc/
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
直接建立子域名名称的文件夹即可使用。不需重启apache。/vhostuser/www.ccbbbb.net/vhostuser/www.xyz.com/vhostusr/www.abc.com

(0)

相关推荐

  • Apache Rewrite实现URL的301跳转和域名跳转

    如果要想用到rewrite模块,必须先安装或加载rewrite模块.方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块. 基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意

  • CentOS服务器apache绑定多个域名的方法

    Apache是最流行的HTTP服务器软件之一,其以快速.可靠(稳定)而著称,并且可通过简单的API扩展,Perl/Python解释器可被编译到服务器中,完全免费,并且源代码全部开放.如果有自己的服务器或者VPS,并且不想为了方便而购买昂贵的控制面板的话,那自己动手配置Apache就成了一门必修课了.下面简单的介绍了如何通过设置Apache的http.conf文件,进行多个域名以及其相关的二级域名的绑定(假设我们要绑定的域名是minidx.com和ntt.cc,二级域名是blog.minidx.c

  • 本地机apache配置基于域名的虚拟主机详解

    1.打开apache的httpd.conf文件,找到# Virtual hosts#Include conf/extra/httpd-vhosts.conf这一段把Include conf/extra/httpd-vhosts.conf前面的"#"去掉. 2.修改位于(win7)c:/windows/system32/drivers/etc/目录下的hosts文件增加一段:127.0.0.1    x.acme.com(你用来访问的域名) 3.我用的是wamp包,所以到c:/wamp/

  • apache将不带www域名301重定向到带www的域名的配置方法

    相信很多站长朋友都有这样的的问题出现.即带www前缀的域名与不带www前缀的顶级域名收录情况是不同的.这个问题主要是由于搜索引擎对于顶级域名与二级域名权重判定不同造成的.毫无疑问地,唯一的域名能够给你带来更多的好处.不管它是带www还是不带www.因为,这样无论用户还是搜索引擎都会记住你网站的唯一域名.也不会造成权重的分流.下面逝去日子告诉大家如何在.htaccess 中强制用户或搜索引擎重定向到唯一的域名上. 复制代码 代码如下: #强制重定向到wwwRewriteEngine OnRewri

  • centos设置fqdn(全称域名)和hostname的方法

    查看 复制代码 代码如下: [root@rdo ~]# hostnamerdo[root@rdo ~]# hostname -frdo.test.com 要实现这个效果,需要修改两个文件 编辑 /etc/sysconfig/network ,你需要加入一行,记住HOSTNAME,必须大写. 复制代码 代码如下: # cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=rdo 编辑 /etc/hosts,增加一行 复制代码 代码如下: 192.168.

  • Apache配置独立域名的方法

    今天我就详细的说明,如何配置Apache,然后顺便配置本地独立域名.所谓本地独立域名,就是你自定义一个域名,无论什么样的都行,比如:baidu.com,只要你喜欢,任你玩! 那么配置独立域名有什么好处呢?告诉你,我们在本地做程序开发,要同时用很多开源程序.CMS.框架,或者自己写的管理系统,那么给他们每一个都配置一个独立的域名,在测试的时候只要在浏览器输入设置好的域名就可以了,方便大大的! 好了,不说别的了,直接进入正题! 第一步,你要安装Apache软件,就老老实实的一步一步装下去,其中让你填

  • windows2003下apache配置虚拟主机和绑定域名服务

    本篇文章的方法大概在网上都可以找到解决方法,只是不是很明确,在这为了减少网友像我这么粗心的少走些弯路,我自己写了下一个简单明了的设置过程. 先说下我的服务器的环境: windows 2003 服务器 apache_2.0.48 php4.2 (我们服务器是独立IP,服务器上也没有装IIS,也没有装DNS服务器之类的,所以只能用Apache虚拟主机了) 下面开始说设置步骤:(我这只说基于主机名的虚拟主机一个IP地址,多个网站 的配置过程,如需了解更多,请参考Apache虚拟主机文档) 1.在win

  • CentOS配置虚拟主机virtualhost使服务器支持多网站多域名的方法

    本文实例讲述了CentOS配置虚拟主机virtualhost使服务器支持多网站多域名的方法.分享给大家供大家参考,具体如下: 如何让centos(redhat)配置虚拟主机,让服务器支持多个网站,针对Apache,只需要你修改apache配置文件/etc/httpd/conf/httpd.conf即可. 里面有个example文件,你只要对应配置即可. #<VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com # Do

  • apache tomcat 一个网站多域名的实现方法

    windows下 C:\WINDOWS\system32\drivers\etc 文件夹内 hosts 里加上 127.0.0.1 www.domain.com 127.0.0.1 bbs.domain.com 127.0.0.1 www.domain.com 127.0.0.1 bbs.domain.com 127.0.0.1 www.domain.com 127.0.0.1 bbs.domain.com 其中 www.domain.com 与 bbs.domain.com 共享同一个网站,目

  • apache虚拟主机中设置泛域名解析的方法

    1.支持多域名 例如,让mail.jbxue.org.smtp.jbxue.org.pop3.jbxue.org 都指向同一个虚拟主机,可以写成: 复制代码 代码如下: ServerName mail.jbxue.orgServerAlias smtp.jbxue.org pop3.jbxue.org ServerName 用于指定首选域名,其他的域名用ServerAlias指定,并用空格区分即可. 2.支持泛域名解析ServerAlias 可支持扩展符,例如,我们希望 xx.a.com 下的所

随机推荐