  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14197
- 金币
- 2389
- 威望
- 1647
- 贡献
- 1337
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:6 i% d/ Y" G7 [+ I* O
& i1 V" T5 p, A* ]' mRewriteEngine on
1 h* f' S8 C$ RRewriteMap lowercase int:tolower! Y; W3 Q+ S0 K% @* k/ b
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
" s! q% w0 k- o w* x# C' [RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$) {' L( v: b. Y) c) D! W1 _! j! g1 S
RewriteCond ${vhost:%1} ^(/.*)$
( X9 G; \' ?+ R9 a' T# YRewriteRule ^/(.*)$ %1/$1
/ r7 j' o4 J' K2 V: T& w# X0 i4 O# k0 ~, g! l6 N5 z
6 Q! N3 i/ U/ V/ T7 {4 z其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。. A# M5 q# X& M r) s
然后,在这个所在路径的目录下创建一个文件: vhost.map0 o3 R( S. w+ I, R
内容为:+ {6 H" N* S1 \4 X# \2 a( k) k
, a3 B8 E+ g% Zwww.domain.com /usr/local/www/data-dist/domain
$ M2 k# V" {0 @bbs.domain.com /usr/local/www/data-dist/bbs
+ a8 ? C0 d' b& y: D+ p: a* Z b7 tanyname.domain.com /usr/local/www/data-dist/anyname/ o, P* X) ^ q; T& Z# }; v
5 `+ k7 N5 U& x/ r# ~以上部分都是:” 域名+空格+绝对路径” 的形式。
6 U: i! V& F7 D0 s& M0 K! `' W
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
8 f& \# f! ^9 ddomain , bbs , anyname 等等,理论上可以无限。- p) z3 Y- @1 Q/ _0 i6 j
% ^! O6 R; m" S% H' I/ t9 N& ]. M这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
$ l" B) ], c. ^5 A$ q5 `' h随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。# Q+ A8 ]8 q2 ^7 H. ?2 _. D
& `' p' y9 {7 f T1 j* o1 n( Y
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
* L. w6 b1 G5 |# a" L; P; O第二步:打配置文件尾部加上
/ M- H6 W; n+ W& L, m8 y" c& j0 v9 qRewriteEngine on3 o4 D( C6 B, A% d
RewriteMap lowercase int:tolower% d% o! W: l n
#定义映像文件0 W, I7 b9 j; r3 T8 [& v/ C
RewriteMap vhost txt:/apache/vhost/vhost.map* J- {1 L) Z! l9 M E# [
#处理变名
0 l! ^4 M5 }' TRewriteCond %{REQUEST_URI} !^/icons/# y. y* n' z5 j. Z7 |7 ?
RewriteCond %{REQUEST_URI} !^/cgi-bin/* c. _( l3 m# \
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$1 B( O* u7 O7 g/ P
这里做基于文件的重新映射
& g7 e( I% Q4 D" j5 }' w% ?& @% S' ^1 IRewriteCond ${vhost:%1} ^(/.*)$1 D. Q$ l' J" D% l3 K- i
RewriteRule ^/(.*)$ %1/$16 Z- F% N x* {/ ]5 N- `
RewriteCond %{REQUEST_URI} ^/cgi-bin/9 @, Z/ T9 o( H/ D
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
2 \5 _7 Y% p& p1 }; DRewriteCond ${vhost:%1} ^(/.*)$! X8 a4 K& i" U" V
RewriteRule ^/(.*)$ %1/cgi-bin/$11 M; n" S l: w0 I3 n0 r
2 S L* G# f( o H& Z9 m" b- ?注意:vhost.map文件是域名和空间映像的文件,格式如下:
9 ?) ^- n7 F5 |8 v2 P9 o' p+ I( Kwww.abc.com /vhostusr/www.abc.com
$ ~! a0 @" |5 Q/ i% [& kwww.xyz.com /vhostuser/www.xyz.com
7 h" }! c( L% p1 Y* A6 n4 swww.cccbbbb.net /vhostuser/www.ccbbbb.net: Y) R) [1 }& L# {: n
.2 h( O# j6 N; K" F# M9 |/ G1 g# m& A& p
.
* a; h) I3 D* D$ J. k.+ A; g9 X. Y3 _! b$ b
.
1 Z6 n* S3 f) c. G(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
& }. \5 u8 i) I6 F- k+ Y7 ~( L第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
5 u. Y9 i- k5 _. ?5 M其实这个可以用php脚本来完成的,很简单的~~呵呵~~~& l( c+ q# T; g# K2 r' ^
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
$ m1 e! h0 ~3 S' r==============================================
7 [1 y- J4 k( t: e" ~/ @& ^/ Y方法二、
9 |- u% b% Q7 R& i; b4 N
- \9 h& @& |; d: b, k/ \6 v+ ]* ]3 h5 ]9 ^ K
rewriteengine on
5 f! h$ B0 p( `8 j# jrewritecond %{HTTP_HOST} [^.]+\.域名\.com$
' B3 q6 v1 H6 J8 R; Crewriterule ^(.+) %{HTTP_HOST}$1 [C]
; c! u3 X# s2 M, z+ P2 `, Mrewriterule ([^.]+)\.域名\.com(.*) /$1$2
! p+ A9 |; T! J# w& ?' }3 D2 g其他配置文件
0 {8 [ j" ?# C; y
- z7 J$ @. Z) y接着在DNS中开设一个泛解析到对应的IP地址。 @ Z$ Z' Y6 m/ q7 ^' L5 c. A r
就可以实现下面的方案。
$ B+ I) D- C* _, h0 |8 Q8 ?& i* E1 ^
域名:domain.com6 G' }5 q+ Q P; `, B( n4 P, r
绝对路径:/home/domain.com/) O! V* u! u& V8 F! h; ]/ R
www.domain.com 自动解析到 /home/domain.com/www/4 |* v3 K) @7 _# A( k/ R! Q
abc.domain.com 自动解析到 /home/domain.com/abc/
! H+ R5 Y1 S' u等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
7 @7 O: F' d; Q# W# q$ x直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|