Board logo

标题: 独立主机Apache 配置二级域名 [打印本页]

作者: admin    时间: 2009-4-26 19:44     标题: 独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
2 |$ x' G$ D- U; \% t% Y" S) ^( C! b  O" F3 g
RewriteEngine on0 P8 l8 m6 W) c% z" `
RewriteMap lowercase int:tolower
, E( W. \  e+ i: s2 E$ wRewriteMap vhost txt:/usr/local/etc/apache/vhost.map, `! X! U+ h# d' q5 k
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$1 S, i) m( V; h$ J( z; P% {
RewriteCond ${vhost:%1} ^(/.*)$& a+ K6 m, y$ x6 C% q0 _7 z% X9 _
RewriteRule ^/(.*)$ %1/$11 |- ^# `) [/ V1 }

. k' A/ t1 g9 }/ G" \
- D" h+ z: `9 d# `其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
2 ?) G0 e+ x) R: m/ h4 ]3 E4 U; k' `然后,在这个所在路径的目录下创建一个文件: vhost.map
- M( h, E, ~1 `7 Y- |* P& j4 P9 y内容为:
* Z% X8 r3 t& A; _( A- Y! @" o0 Y7 {! [/ y4 ~% p
www.domain.com /usr/local/www/data-dist/domain3 T4 W! F0 V) d+ q0 L+ i  B
bbs.domain.com /usr/local/www/data-dist/bbs7 X. |% V+ M& q7 x& T; `
anyname.domain.com /usr/local/www/data-dist/anyname1 [6 K1 D+ K- G+ Y+ b! V/ A" i
, U/ t- A% M( i5 a4 L
以上部分都是:” 域名+空格+绝对路径” 的形式。
3 d- `$ |, n: Q; ?
0 F6 L6 ]$ @9 P& k) g最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
% n, V  e# z, I* N& [) K7 Wdomain , bbs , anyname 等等,理论上可以无限。0 T2 p+ ?4 O1 W: [& [) r# R

2 @% }5 u) ?; f1 r( B* w! b% V5 t这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
% W. d  R9 A0 R随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。5 Y* W7 ^+ [% H3 v4 l% Z- e
( C/ e2 Y1 H6 {* [) J- V! O% g
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。+ \4 q& f% U6 a+ D) }
第二步:打配置文件尾部加上* W( {: |) T- D$ A
RewriteEngine on
2 R* t; {+ {- i4 v$ SRewriteMap lowercase int:tolower& n1 c! b  Y& K$ J: [3 D! T- T1 G2 U
#定义映像文件: g2 @1 P& h. Z5 F) D
RewriteMap vhost txt:/apache/vhost/vhost.map4 ?$ |+ `5 l' K4 @: ]* V
#处理变名
3 l  c2 g2 ?8 B; K7 M* |RewriteCond %{REQUEST_URI} !^/icons/
# s6 F, _8 q" o& R1 b: _RewriteCond %{REQUEST_URI} !^/cgi-bin/9 a3 ~' q0 k8 d0 M, _$ P
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
3 C! p1 M( r: {这里做基于文件的重新映射
8 Q/ C) E! h- a5 s% WRewriteCond ${vhost:%1} ^(/.*)$* C  n7 `( i; w8 ~
RewriteRule ^/(.*)$ %1/$1. F: _$ D7 ^5 t$ L+ t
RewriteCond %{REQUEST_URI} ^/cgi-bin/
% G: V" V6 h: D% ^RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
2 b! u/ a4 S4 X- A! P" FRewriteCond ${vhost:%1} ^(/.*)$
- i% ]! s; E% j1 r& k, FRewriteRule ^/(.*)$ %1/cgi-bin/$11 ]! ?3 P) S! l" P. z: J
: T. c/ f0 Q4 j1 c- }/ C  B
注意:vhost.map文件是域名和空间映像的文件,格式如下: . t; d# l/ D  \8 m: s! a1 \
www.abc.com /vhostusr/www.abc.com
- y+ m& b( `; ?$ k4 Cwww.xyz.com /vhostuser/www.xyz.com: \0 h8 b8 U4 P) E
www.cccbbbb.net /vhostuser/www.ccbbbb.net3 J, D6 k/ H8 z
.$ q9 Y) J3 J: n% G
.  L2 k8 g  X7 ~! \0 S1 }0 H
.5 R6 x' H1 ^0 `' k9 O8 K
.! R* ^" T! V! I/ a+ n- ]
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)9 X6 v+ u; ]& o  z+ N
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~6 {& @. S/ R4 c( K- G5 ^
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
! j* l3 r0 ^" P4 e# f) j4 U' Z注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
& s3 h8 _+ Y! ~==============================================+ i4 d+ F0 R! j* r8 v# K
方法二、4 @5 a3 H  b6 L- q4 _/ e# @9 _

0 s1 R% `! L/ I) j, f6 H
* R7 H1 I* |# Grewriteengine on
( y' }, U; V' H$ Rrewritecond %{HTTP_HOST} [^.]+\.域名\.com$: H, H3 g0 b+ z& _& t/ f
rewriterule ^(.+) %{HTTP_HOST}$1 [C]* w/ ?$ ]0 |# o, h
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
9 Z0 J7 O9 R0 ]! {" l其他配置文件' l& P3 n% G0 _" W: M

% ]2 n1 P' t3 F接着在DNS中开设一个泛解析到对应的IP地址。/ a6 r/ F/ t1 q5 |7 U. ]4 d
就可以实现下面的方案。
5 n! H9 q8 ?$ f( [6 C, J) F8 ^4 ^' M- F! v# X2 O! W. r( _, @6 W
域名:domain.com
6 r1 m& X5 R- ~: V1 ~' k) C绝对路径:/home/domain.com/. ~: [! H3 x+ H& h  O" s
www.domain.com 自动解析到 /home/domain.com/www/
0 W. M3 Q! G/ D" Dabc.domain.com 自动解析到 /home/domain.com/abc/
3 G$ |! C* J8 z4 g1 Z等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹. V4 x( k! s9 |; Y
直接建立子域名名称的文件夹即可使用。不需重启apache。




欢迎光临 捌玖网络工作室 (http://89w.org/) Powered by Discuz! 7.2