  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14197
- 金币
- 2389
- 威望
- 1647
- 贡献
- 1337
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
/ e: n3 ^. f; D# h0 Q3 h" ]3 Q" g) P8 `- l6 B/ ~$ _
RewriteEngine on$ u( s0 w6 j* F) ?: I) Q
RewriteMap lowercase int:tolower
s+ P& J/ m }RewriteMap vhost txt:/usr/local/etc/apache/vhost.map' {& G; ]) N/ C" t
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
' p- X- V/ M/ g: L; m1 g! H+ uRewriteCond ${vhost:%1} ^(/.*)$$ M" N1 _% O/ B; h2 `0 l
RewriteRule ^/(.*)$ %1/$1 H% s" S0 z9 e+ U
( Y& G# B u. C1 D$ H" }$ O- v* _0 f- F) `1 D: @. t, I
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。: B( W" a+ |0 X, H$ e1 {6 ]/ r
然后,在这个所在路径的目录下创建一个文件: vhost.map
# u z1 h5 \& m8 J内容为:6 p0 ^1 ]7 E$ O4 X
4 X# _8 |& c/ k5 t" z+ Lwww.domain.com /usr/local/www/data-dist/domain
9 n' o9 B6 F$ D0 o9 Wbbs.domain.com /usr/local/www/data-dist/bbs
2 V. H! F/ b, q' u3 Z. S+ Yanyname.domain.com /usr/local/www/data-dist/anyname. ~1 r; S6 c( ~& Q6 z
2 p% H; R: v7 y \) N
以上部分都是:” 域名+空格+绝对路径” 的形式。
1 m$ I7 i R f* v6 j+ J0 s) X$ T* {, |% L
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:9 R J3 ~' x+ U7 i* [
domain , bbs , anyname 等等,理论上可以无限。, X' ~+ ]0 D f, i
6 f+ v1 f( d- S2 o, Q, ?8 w这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以: L- r1 g% [& ^
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
4 m6 `8 ?. U$ k9 d9 R4 Y* u. F0 p1 J' c- j! T2 {% e4 h
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
8 ?: \" [1 ^: E% z# K第二步:打配置文件尾部加上" W! a T$ I* B( a2 @
RewriteEngine on$ t7 L d9 b! I1 ~9 A
RewriteMap lowercase int:tolower# K0 `, ^. E% `3 s4 t
#定义映像文件) _8 N! ^$ d, r
RewriteMap vhost txt:/apache/vhost/vhost.map
2 c6 a- H$ J2 n0 I; Y#处理变名
/ h4 e) \2 |, E0 Y/ B! B7 KRewriteCond %{REQUEST_URI} !^/icons/. ^, k2 K5 ?, s# \
RewriteCond %{REQUEST_URI} !^/cgi-bin/
% \. o! `( [7 ~. M4 C6 xRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
3 K0 x( I1 h j这里做基于文件的重新映射
! D2 ~1 f; M; [4 J# O9 ^) DRewriteCond ${vhost:%1} ^(/.*)$
. j: l+ \- g/ a. {, b' }2 J+ iRewriteRule ^/(.*)$ %1/$1, q7 w- b' Z% E9 }8 Q' t
RewriteCond %{REQUEST_URI} ^/cgi-bin/
1 U. y7 B* `: VRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$' j6 B3 M0 T7 R: t9 E# Y
RewriteCond ${vhost:%1} ^(/.*)$
/ \3 b' I6 ?0 z% kRewriteRule ^/(.*)$ %1/cgi-bin/$1
6 I3 P$ B; C6 d z) Y: e2 W' v
0 l8 c8 D% i# \& E: w+ X2 w注意:vhost.map文件是域名和空间映像的文件,格式如下:
: s2 c; M0 v' jwww.abc.com /vhostusr/www.abc.com
2 K9 P8 i5 M% R; g1 Qwww.xyz.com /vhostuser/www.xyz.com
0 w/ X/ q; o2 B3 S, G, k' jwww.cccbbbb.net /vhostuser/www.ccbbbb.net
/ s' ~* \* g! h, `.
9 L8 g. i- d6 v1 M, m.
8 q6 b& k, u, y.# ~9 R1 c. F# u/ s3 R
. N4 }6 Q/ e- _, h5 k5 {( |; I/ Z
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)( S* C5 _ _1 y0 y) t/ ^9 {: q
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
3 F9 D7 Y) Z% K; P其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
) n1 m1 I' H8 s8 @1 D; `注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~3 O- f' t' m$ H( i4 U
==============================================
! z y2 _, j8 ~- f方法二、, w3 Q3 i4 `& m) x& \1 y- E
, j& I; K( v9 m, v# y5 i7 A
8 f% I5 u) `& u0 d6 P% zrewriteengine on
) N1 b/ L' ] Hrewritecond %{HTTP_HOST} [^.]+\.域名\.com$
$ a4 ~. Z& v1 ]7 E- nrewriterule ^(.+) %{HTTP_HOST}$1 [C]
$ M% l V( D) A3 Yrewriterule ([^.]+)\.域名\.com(.*) /$1$2
; c6 Z" [5 s$ U H其他配置文件
4 ~* k4 j7 s7 ?* j3 ]# e+ b- j0 i# X @9 ~
接着在DNS中开设一个泛解析到对应的IP地址。
& D; `7 U: u0 `5 @" M6 F r5 E/ x就可以实现下面的方案。; S, `% ]9 o2 c# c& g2 u9 a& m% M
$ p) d- o) q. [/ A6 g2 ?域名:domain.com% I9 i! v& P/ u* n6 c9 E
绝对路径:/home/domain.com/. h e( U. O+ Y, ?) e( }6 W9 ~
www.domain.com 自动解析到 /home/domain.com/www/
- b0 f8 Q( |4 D: L* oabc.domain.com 自动解析到 /home/domain.com/abc/7 X. {; m, p& h# I U
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
; N7 Y+ n7 T" r9 F直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|