`
smarttony2013
  • 浏览: 45968 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

简单快速的Apache二级域名实现方法介绍 .

 
阅读更多

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com

其次,在 httpd.conf 中打开 mod_rewrite

之后,在 httpd.conf 的最后,添加以下内容:

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。

如何开启mod_rewrite

2007年7月29日 | 分类:用学习充实自我| 标签:mod_rewrite| 271pv

仅作为备忘.

在apache的 httpd.conf中 去掉下面一行前面的#,

LoadModule rewrite_module modules/mod_rewrite.so

重启apache生效。

目录权限设置:

Apache的httpd.conf中找到网站目录对应的

"AllowOverride None"

改为

"AllowOverride FileInfo Options"

因为如果设置为"AllowOverride None"

.htaccess中的rewrite指令对该文件夹就无效了

apache Rewrite 二级域名设定

在httpd.conf中,对某个主机进行以下操作:

<VirtualHost ip:80>
rewriteengine on
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
其他配置文件
</VirtualHost>

接着在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。

泛域名解析就是将客户的域名全部解析到同一个IP地址。
例如客户的域名a.com,之下所设的*.a.com全部解析到同一个IP地址上去。
比如客户设b.a.com就会自已自动解析到与a.com同一个IP地址上去。

泛域名是指 * IN A 123.123.123.123 或 * IN CNAMEwww.aaa.com

泛域名解析的用途:

1.可以让域名支持无限的子域名(这也是泛域名解析最大的用途)。
2.防止用户错误输入导致的网站不能访问的问题。

在DNS服务器里面设置泛域名解析有2种方式

1. 在域名解析里面设置 *.a.com的A记录或者CName 记录指向某一个IP/服务器名(这种方式 虚拟主机用户是不支持的)
2. 在域名转发里面设置 *.a.com 转发到http://www.a.com( 虚拟主机可以支持这种转发方式,用户在自己的程序中可以判断访问者要访问的域名),我们会在程序技术文档里面讲解

例子二:
http://www.xuega.com/klein/blog/article_321.html

实现动态二级域名解析的一个关键就是,把特有的名字怎么能够提出来,因为RewriteRule中的匹配,是不包括域名的匹配的,其实这其中就是一层窗户纸,把域名先重写放到“路径”中,再对“路径”重写一次就可以了,也就是说加一步过渡。这样说大概还一头雾水,给个实例。

首先按我上次写的文章的那个需求写一个,假设动态解析*.iecn.cn。

注意要先做一个所谓的范域名解析,就是说把所有*.iecn.cn解析到某个IP上去,这不是本文章讨论范围就不细说了。

Apache中相关配置如下:

<VirtualHost _default_:80>
ServerAdmin
DocumentRoot /YourWwwRoot/.default
ServerName all-sites
ErrorLog logs/all-sites-error_log
CustomLog logs/all-sites-access_log common
# 下面三行实现动态解析
RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.iecn\.cn$
RewriteRule ^/(.*)$ /%{SERVER_NAME}/$1 ##注##
RewriteRule ^/([a-z0-9\-]+)\.iecn\.cn/(.*)$ /YourWwwRoot/$1/$2 [L]
# 没有解析到的情况下扔到自己的一个PHP中做一下处理
RewriteRule ^.*$ /index.php [L]
</VirtualHost>

注意我标注的地方,那一步就是一个过渡,说一下过程吧,假设现在访问:
http://zhong.iecn.cn/xxx
经第一步重写,变成 /zhong.iecn.cn/xxx
经第二步重写就是 /YourWwwRoot/zhong/xxx 了,其他的操作与我行前说的基本就差不多了。

再举一个可能更常见的实例,假设一个博客系统,要求把
http://xxx.iecn.cn
隐式的重写成
http://blog.iecn.cn/blog.php?u=xxx
这里面的xxx可以看做是一个用户名,想必类似这样的需求大家一定都见过很多了,不过多解释了。

同意先做范域名解析这里不多说。在Apache中做如下重写(只写Rewrite部分了):

RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.iecn\.cn$
RewriteRule ^/?$ /%{HTTP_HOST}
RewriteRule ^/([a-z0-9\-]+)\.iecn\.cn/?$ /blog.php?u=$1 [L]

zz fromhttp://blog.iecn.net/blog.php?do=showone&tid=1013


Apache下用rewrite实现任意域名的动态解析

Apache的mod_rewrite模块功能非常强大,我以后会写更多的实例出来。

关于mod_rewrite的使用,不想多说,提供两个相关文档的地址:
http://w.yi.org/ftp/FAPM/apache/Apache2/zh/mod/mod_rewrite.html
http://man.chinaunix.net/newsoft/Apache2.2_chinese_manual/mod/mod_rewrite.html

如果你只是想用一个现成的你可以直接把我的copy过去改改,如果想从技术上搞清楚,那么首先要掌握两方面的技术:
Apache下mod_rewrite的使用(可参照我上面提供的两个地址)
正则表达式(这是一门在很多地方都非常有用的技术)

废话不多说,说一下我在IECN.NET服务器的实际配置。

我习惯使用NameVirtualHost,如果你的服务器中只想用这种动态的解析,直接在配置文件中做是一样的,如果想保留自己一些特殊站点的配置,还是用NameVirtualHost吧。

在Apache中,如果启用了NameVirtualHost,在没有匹配到的解析的情况下,会默认到第一组VirtualHost中,所以我们的动态解析自然是放到第一组VirtualHost(有关apache的一些配置这里就不多说,自己查阅相关文档。),如下:
<VirtualHost _default_:80>
ServerAdmin
DocumentRoot /YourWwwRoot/.default
ServerName all-sites
ErrorLog logs/all-sites-error_log
CustomLog logs/all-sites-access_log common
# 下面两行实现动态解析
RewriteCond /YourWwwRoot/%{SERVER_NAME} -d
RewriteRule ^/(.*)$ /YourWwwRoot/%{SERVER_NAME}/$1 [L]
# 没有解析到的情况下扔到自己的一个PHP中做一下处理
RewriteRule ^.*$ /index.php [L]
</VirtualHost>

把YourWwwRoot换成你自己的路径,注意这里的ServerName没有让它起作用,关建看这两行:
RewriteCond /YourWwwRoot/%{SERVER_NAME} -d
RewriteRule ^/(.*)$ /YourWwwRoot/%{SERVER_NAME}/$1 [L]

第一行是一个rewrite条件,这里的条件是:如果存在路径/YourWwwRoot/%{SERVER_NAME},%{SERVER_NAME}就是你访问站点的域名,-d就表示存在这个路径的意思(如果是文件则是-f);
第二行是一个rewrite规则,这个规则执行的前提是:符合规则的正则表达式匹配;符合它前面(也就是刚才说的第一行)rewrite条件。这里面是的匹配的是.*,也就是所有了,也就是说只要第一行的条件成立,它就会被重写到/YourWwwRoot/%{SERVER_NAME}/$1,% {SERVER_NAME}是站点的域名,$1则是匹配到的.*。

OK,现在就很清楚了,假设现在有www.domain.com指向到这个服务器,当你访问它时(这里假设没有在其他VirtualHost解析这个域名),看看它是如何工作的:
首先它在没有找到匹配的解析时,就来到了这组默认的VirtualHost;
判断 /YourWwwRoot/www.domain.com 是否存在;
如果存在,重定向到 /YourWwwRoot/www.domain.com。

假设你访问http://www.domain.com/test.html,就会重定向到系统的 /YourWwwRoot/www.domain.com/test.html。

那也就是说你在 YourWwwRoot 下建一个与域名同名的目录(并具备apache访问的权限),就实现了这个域名的解析。

说起来似乎有点难懂,其实很简单的。
这是一个对任意域名的动态解析,哪天有空再写一下对同一域名下二级域名的解析,其实对这个略做改动就可以了。

/--------------

我的域名是在www.3322.org申请的二级域名wl.7766.org,在www.3322.org那里对wl.7766.org打开了“通配符(*)支持”的选项,也就是域名泛解析的支持,所有的 *.wl.7766.org 都指向wl.7766.org。

现在我把httpd.conf内容改为如下,用户空间的个人域名开通了。

  1. NameVirtualHost 192.168.1.207
  2. <VirtualHost 192.168.1.207>
  3. ServerName wl.7766.org
  4. DocumentRoot /var/www/htdocs #网站根目录
  5. </VirtualHost>
  6. <VirtualHost 192.168.1.207>
  7. DocumentRoot /var/www/htdocs/xspace #X-space的目录
  8. ServerName blog.wl.7766.org # X-space博客的域名
  9. ServerAlias *.blog.wl.7766.org # 开通泛解析
  10. </VirtualHost>
复制代码


用户可以用username.blog.wl.7766.org这样的域名访问自己的空间(有点长,哈)。

只是有一个小问题,当用blog.wl.7766.org进入X-space页面,在X-space的首页右边快速登录处登录,登录成功后身份仍是Guest,如果用wl.7766.org/xspace访问,则一切正常,大概是cookies的问题。
如果是在顶部导航栏的“用户登录”处登录,那么不论用什么域名,登录也一切正常,因为这个地方的链接总是http://wl.7766.org/xspace/index.php/action/login

分享到:
评论

相关推荐

    基于opencv实现象棋识别及棋谱定位python源码+数据集-人工智能课程设计

    基于opencv实现象棋识别及棋谱定位python源码+数据集-人工智能课程设计,含有代码注释,满分课程设计资源,新手也可看懂,期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为课程设计期末大作业使用,该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 基于opencv实现象棋识别及棋谱定位python源码+数据集-人工智能课程设计,含有代码注释,满分课程设计资源,新手也可看懂,期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为课程设计期末大作业使用,该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 基于opencv实现象棋识别及棋谱定位python源码+数据集-人工智能课程设计,含有代码注释,满分课程设计资源,新手也可看懂,期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为课程设计期末大作业使用,该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。基于opencv实现象棋识别及棋谱定位python源码+数据集

    基于Python实现的Cowrie蜜罐设计源码

    该项目为基于Python实现的Cowrie蜜罐设计源码,共计380个文件,涵盖166个Python源代码文件,以及包括RST、SQL、YAML、Markdown等多种类型的配置和文档文件。Cowrie蜜罐是一款用于记录暴力攻击和攻击者执行的SSH及Telnet交互的中等交互式蜜罐。

    QT 摄像头获取每一帧图像数据以及opencv获取清晰度

    QT 摄像头获取每一帧图像数据以及opencv获取清晰度

    基于asp.net的(CS)地震预测系统设计与实现.docx

    基于asp.net的(CS)地震预测系统设计与实现.docx

    基于Springboot和Mysql的医院药品管理系统代码(程序,中文注释)

    医院药品管理系统-医院药品管理系统-医院药品管理系统-医院药品管理系统-医院药品管理系统-医院药品管理系统-医院药品管理系统-医院药品管理系统-医院药品管理系统-医院药品管理系统-医院药品管理系统-医院药品管理系统 1、资源说明:医院药品管理系统源码,本资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 2、适用人群:计算机相关专业(如计算计、信息安全、大数据、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工等学习者,作为参考资料,进行参考学习使用。 3、资源用途:本资源具有较高的学习借鉴价值,可以作为“参考资料”,注意不是“定制需求”,代码只能作为学习参考,不能完全复制照搬。需要有一定的基础,能够看懂代码,能够自行调试代码,能够自行添加功能修改代码。 4. 最新计算机软件毕业设计选题大全(文章底部有博主联系方式): https://blog.csdn.net/2301_79206800/article/details/135931154 技术栈、环境、工具、软件: ① 系统环境:Windows ② 开发语言:Java ③ 框架:SpringBo

    mqtt单点到点聊天工具

    mqtt单点到点聊天工具

    【图像融合】基于matlab GUI拉普拉斯金字塔+小波变换图像融合【含Matlab源码 857期】.zip

    CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 图像融合:小波变换图像融合、遗传算法图像融合、IHS图像融合、PCA图像融合、curvelet变换图像融合、拉普拉斯金字塔+NSCT图像融合、医学图像图像融合、高分辨全色图像融合 DSIFT多聚焦图像融合、加权平均法图像融合、泊松彩色图像融合、主成分结合小波离散变换PCA-DWT图像融合、矩阵优化图像融合、导向滤波图像融合、拉普拉斯图像融合、系数绝对值最大图像融合

    基于ZCAM E2系列相机的OBS设计源码实现

    该项目为OBS直播软件的扩展设计源码,采用C++语言编写,并包含C、Shell和C等其他语言。源码共99个文件,其中包含16个头文件、11个PowerShell脚本、9个C++源文件、6个ZSH脚本、5个Shell脚本、5个输入文件、4个INI配置文件、3个YAML文件、3个文本文件、2个JSON文件。源码实现将ZCAM E2系列相机直接集成至OBS作为直播源,支持直播功能。

    VLOOKUP函数:在Excel中查找并返回数组特定元素的实用指南

    在Excel中处理数据时,我们经常需要从大量数据中提取特定的信息。VLOOKUP函数(垂直查找函数)是一个非常强大的工具,它可以帮助我们在数据表中查找并返回相应的值。本文将详细探讨如何使用VLOOKUP函数查找并返回数组中的特定元素,包括函数的语法、使用技巧和实际应用中的代码示例。 VLOOKUP函数是Excel中进行数据查找和提取的强大工具。通过使用VLOOKUP进行精确匹配、近似匹配、数组公式和反向查找,可以有效地从数组中查找并返回特定的元素。此外,使用IFERROR和数据类型检查可以提高数据查找的准确性和可靠性。通过这些技巧和方法,可以确保VLOOKUP函数在各种情况下都能准确无误地执行。

    拷贝到Windows 10的C:\Windows\System32或C:\Windows\SysWOW64,之后重启电脑

    拷贝到Windows 10的C:\Windows\System32或C:\Windows\SysWOW64,之后重启电脑

    excel统计分析(3): 一元线性回归分析

    excel统计分析(3): 一元线性回归分析

    基于matlab碳交易机制下考虑需求响应的优化运行【含Matlab源码 期】.zip

    CSDN海神之光上传的全部代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博主博客文章底部QQ名片; 4.1 CSDN博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    精简博客系统 基于Springboot和Mysql的精简博客系统代码(程序,中文注释)

    精简博客系统-精简博客系统-精简博客系统-精简博客系统-精简博客系统-精简博客系统-精简博客系统-精简博客系统-精简博客系统-精简博客系统-精简博客系统-精简博客系统 1、资源说明:精简博客系统源码,本资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 2、适用人群:计算机相关专业(如计算计、信息安全、大数据、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工等学习者,作为参考资料,进行参考学习使用。 3、资源用途:本资源具有较高的学习借鉴价值,可以作为“参考资料”,注意不是“定制需求”,代码只能作为学习参考,不能完全复制照搬。需要有一定的基础,能够看懂代码,能够自行调试代码,能够自行添加功能修改代码。 4. 最新计算机软件毕业设计选题大全(文章底部有博主联系方式): https://blog.csdn.net/2301_79206800/article/details/135931154 技术栈、环境、工具、软件: ① 系统环境:Windows ② 开发语言:Java ③ 框架:SpringBoot ④ 架构:B/S、MVC ⑤ 开发环境:IDE

    基于Scrapy框架的豆瓣电影爬虫系统

    项目介绍使用Scrapy框架爬取豆瓣电影,豆瓣选影视页面分别筛选地区为中国大陆、香港、台湾(可更换为其他地区),构造Ajax请求,获取电影id,再通过id构造电影链接,解析页面后获得电影详细数据,如名称、年份、导演、主演、类型等。 在IT行业中,网络爬虫是获取大量数据的重要手段,尤其在金融数据分析领域,如股票评论数据,能够为投资者提供宝贵的市场情绪参考。本项目聚焦于使用Python的Scrapy框架来批量爬取豆瓣电影网的数据,从而进行数据分析。 Scrapy是一个强大的Python爬虫框架,它提供了一整套解决方案,包括网页抓取、解析、数据存储等。使用Scrapy,我们可以高效地构建起一个完整的爬虫项目,其主要组件包括Spiders、Item、Item Pipeline、Downloader Middleware和Settings等。 1. **Spiders**:是Scrapy的核心,负责定义如何抓取数据以及如何处理抓取到的数据。在这个项目中,我们需要创建一个Spider,设置其起始URL(通常是豆瓣电影网的评论页面),并定义如何解析HTML页面,提取评论内容、用户名、

    基于c语言的配有图片和音乐的打字母游戏.zip

    基于c语言的配有图片和音乐的打字母游戏.zip

    基于asp.net的歌迷购物网设计与实现.docx

    基于asp.net的歌迷购物网设计与实现.docx

    基于Vue框架的hao123程序员网址导航设计源码

    该项目是一款基于Vue框架构建的程序员网址导航系统源码,包含136个文件,包括56个PNG图片、49个ICO图标、11个Vue组件文件、5个JavaScript文件以及少量JSON、YAML和其他配置文件。该系统以简洁明了的界面,为程序员提供便捷的网址导航服务。

    MPU6050 DMP文件移植包

    MPU6050 DMP文件移植包

    PyOpenGL-3.0.1 (2).zip

    opengl安装包

    螺旋轴泵3D模型图纸 Solidworks设计 附STEP格式.zip

    螺旋轴泵3D模型图纸 Solidworks设计 附STEP格式.zip

Global site tag (gtag.js) - Google Analytics