日期:2014-05-16  浏览次数:20958 次

Apache绑定多个域名以及二级域名的方法 Rewrite使用

Apache绑定多个域名以及二级域名的方法 Rewrite使用

在项目中经常要用到一个多个二级域名站点,那么有没有好用的管理方便的架设方法!

下面以最近在做的天气预报15天查询(http://tqybw.net)项目为例,给大家一个做一个示例说明!

首先,你要有一个泛解析的顶级域名 tqybw.net

在后台添加一条A记录*.tqybw.net

?

打开http.conf?

在文件尾部添加NameVirtualHost *?

简单的添加:?

<VirtualHost *>?

DocumentRoot /usr/local/www?

ServerName tqybw.net?

ServerAlias *.tqybw.net?

RewriteEngine on?

RewriteMap lowercase int:tolower?

RewriteMap vhost txt:/usr/local/apache2/conf/vhost.map?

RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$?

RewriteCond ${vhost:%1} ^(/.*)$?

RewriteRule ^/(.*)$ %1/$1?

</VirtualHost>

?

注:其中/usr/local/apache2/conf/为你的apache的配置文件夹根据实际情况修改

?

进入配置文件目录新建vhost.map文件,添加内容如下:?

www.tqybw.net /usr/local/www?

bbs.tqybw.net /usr/local/www/bbs?

blog.tqybw.net /usr/local/www/blog

?

启动或重启一次apache

?

打开浏览器?

输入www.tqybw.net将访问到/usr/local/www下的内容?

输入bbs.tqybw.net将访问到/usr/local/www/bbs下的内容?

依次类推。。。?

理论上可以设无限个二级域名,而且不用重启服务器

?

http://www.tqybw.net直接到根目录下

?

别的二级域名如

xyz.tqybw.net到根目录下的xyz目录。

?

实现:

配置apache的http.conf文件,

->取消164行LoadModule rewrite_module modules/mod_rewrite.so前的#号

->文件最后

RewriteEngine on

?

RewriteCond %{HTTP_HOST} ^www\.tqybw\.net$?

RewriteRule ^(.+) /$1 [L]

?

RewriteCond %{HTTP_HOST} [^.]+\.tqybw\.net$?

RewriteRule ^(.+) %{HTTP_HOST}$1 [C]?

RewriteRule ([^.]+)\.tqybw\.net(.*) /$1$2

?

# 配置 Apache重定向模块 用于二级域名解析

RewriteEngine on

?

# 主站,url是http://www.tqybw.net

RewriteCond %{HTTP_HOST} ^www\.tqybw\.net$?

RewriteRule ^(.+) /$1 [L]

?

# 专业子站 url是gongsi.tqybw.net/

# 专业子站,进入 例如 specialty/gongsi/ 这样的子目录,但是,如果是找js,css,upload等,则再度返回主站目录

RewriteCond %{HTTP_HOST} ^(gongsi|fangdichan|haishang|hunyin|jianshe|jingji|jingrong|laodong|shewai|sunhai)\.tqybw\.net$?

RewriteRule ^(.+) %{HTTP_HOST}$1 [C]?

RewriteRule ([^.]+)\.tqybw\.net(.*) /specialty/$1$2 [C]

RewriteRule /specialty/[^/]+/(ajax|cp|css|fckeditor|images|js|upload)/(.+) /$1/$2 [L]

?

# 地区分站 url是qiche.tqybw.net

# 地区分站,进入 例如 area/nanjing/ 这样的子目录,但是,如果是找js,css,upload等,则再度返回主站目录

RewriteCond %{HTTP_HOST} ^([^.]+)law\.abc\.com$?

RewriteRule ^(.+) %{HTTP_HOST}$1 [C]?

RewriteRule ([^.]+)law\.tqybw\.net(.*) /area/$1$2 [C]?

RewriteRule /area/[^/]+/(ajax|cp|css|fckeditor|images|js|upload)/(.+) /$1/$2 [L]

?

# 博客 url是youjia.tqybw.net/

# 博客,进入 例如 blog/z/h/angsan/ 这样的子目录,但是,如果是找js,css,upload等,则再度返回主站目录

RewriteCond %{HTTP_HOST} [^.]+\.tqybw\.net$?

RewriteRule ^(.+) %{HTTP_HOST}$1 [C]?

RewriteRule (a-z0-9)(a-z0-9)([^.]+)\.xieye\.com(.*) /blog/$1/$2/$3$4?

RewriteRule /blog/[^/]+/[^/]+/[^/]+/(ajax|cp|css|fckeditor|images|js|upload)/(.+) /$1/$2 [L]

?

注:

?

需要模块

LoadModule proxy_module modules/mod_proxy.so

LoadModule rewrite_module modules/mod_rewrite.so

$1/$2 [P] 改成P 就是用隐藏, 需要上面的mod_proxy.so