获得本站免费赞助空间请点这里
返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:; A" B9 p  `  x" ?: o) b

4 `. Z* V; m8 z7 \! D' H7 X8 p( vRewriteEngine on
% ?0 }5 ?- e$ ERewriteMap lowercase int:tolower$ N, y6 {4 _! q& ~+ u2 C
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
/ q& A( d7 X0 ], s9 }2 |& h2 YRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
: {: s/ {  K; x/ @3 {2 ZRewriteCond ${vhost:%1} ^(/.*)$
" O' P. W) V5 w) N1 H' GRewriteRule ^/(.*)$ %1/$1/ j' u  v1 k( r

- Y& i( E+ w- Q. n3 _: a% g( c" c9 X% g6 N
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。2 p8 s; d( e7 B' `/ s4 {
然后,在这个所在路径的目录下创建一个文件: vhost.map
7 s( s+ O! a  B% W2 s3 t内容为:  K% Q" q, f! _; D9 d5 l

  T5 Y2 T4 C; k% Ywww.domain.com /usr/local/www/data-dist/domain+ _7 H5 z; O2 K( O
bbs.domain.com /usr/local/www/data-dist/bbs5 Y& [# i, J, t; n
anyname.domain.com /usr/local/www/data-dist/anyname
' `* V& t, F( U0 v" r
" B+ C# U4 @! w& F! Y1 W' r$ k以上部分都是:” 域名+空格+绝对路径” 的形式。
* z6 i9 h' B5 j; C% y: K- l2 R+ o* ~- b! I
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:4 T4 N5 X) o# |# U1 T
domain , bbs , anyname 等等,理论上可以无限。
4 K( F! C" J# E& Y) c
6 R; f  d0 c/ @: ~+ s+ q这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
* L7 q/ ^+ y7 B. |# H随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。' {) C) z+ F$ U( |  }
, p0 U7 I0 _+ X9 O- ?
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
* N- r. _# ^& r  Q第二步:打配置文件尾部加上
2 n$ m6 ~4 m0 ^1 R  z# HRewriteEngine on# r2 V& ]$ f8 B3 W) D
RewriteMap lowercase int:tolower
) L% M, d8 A; H9 s' q#定义映像文件
  j& ^/ s4 W4 RRewriteMap vhost txt:/apache/vhost/vhost.map* I& |, R$ o7 j, h7 A' C
#处理变名
8 t* W: v) s/ fRewriteCond %{REQUEST_URI} !^/icons/5 ~) D" @) _+ o6 H# k) H
RewriteCond %{REQUEST_URI} !^/cgi-bin/
2 k) S+ B2 l. w2 z. f0 yRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
* b. }5 Y  a0 w这里做基于文件的重新映射
; H: I- ~; K# X/ h3 j. s3 y" wRewriteCond ${vhost:%1} ^(/.*)$
; w* u' R7 V* G$ A9 t! iRewriteRule ^/(.*)$ %1/$1
; d$ M- P. j/ U5 JRewriteCond %{REQUEST_URI} ^/cgi-bin/8 \" s5 {+ _8 r  ?2 e
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$% `$ ~. y4 W* ]) ~5 F1 f
RewriteCond ${vhost:%1} ^(/.*)$
) f; D/ Y* ?  W0 @* A! XRewriteRule ^/(.*)$ %1/cgi-bin/$1
# L* N/ B0 j. M2 n' K8 r, h, X% Q8 z! t4 U, i% O+ w# ?# t
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
# t6 d2 ^9 g; K3 Swww.abc.com /vhostusr/www.abc.com4 R0 h2 p7 [( M6 _
www.xyz.com /vhostuser/www.xyz.com4 a- F' K2 j  x" {% w$ [8 v# e
www.cccbbbb.net /vhostuser/www.ccbbbb.net
0 ^4 r. F9 u1 U- t' f) I+ q.7 {* I' _5 u' x5 _7 C
.
( ~1 K5 ?! j  {3 o7 t8 g( q.0 {3 l' e2 H  ]9 G+ S( X
.9 a$ _9 t" _% R6 w& w, U
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)* I) j- \0 Y  X! g4 ~* W- @
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
) S6 \+ |* d" x2 S4 R3 V其实这个可以用php脚本来完成的,很简单的~~呵呵~~~$ Q: c- V+ ]+ F0 c5 F6 Q
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~. i8 T" D' x, T0 F5 T
==============================================
! p0 e7 f! w- S; H3 m8 J方法二、( f' D. g  v/ x" s
5 X, y6 r6 F' {$ U' A; `$ u
( h" q" |1 x* N' Q
rewriteengine on/ [7 G4 D3 y" P4 k7 J0 e
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$4 p1 U, P; v/ C9 k! h/ n* n+ o, z
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
: j# s5 s" ]) I% Nrewriterule ([^.]+)\.域名\.com(.*) /$1$2
$ M1 @# Y" c& u其他配置文件# r( e  t# a$ T  V( \7 c: m
: W9 d: D' h+ w: O8 n! j7 x# {  }, |, m
接着在DNS中开设一个泛解析到对应的IP地址。" M8 b5 W' h& n. P" f% B. W  F
就可以实现下面的方案。2 N$ o) ]9 q! e7 z& z2 M4 u
: [' `' O" t5 b4 B0 f# ^# X1 k) y
域名:domain.com
% ?6 \: Z, U3 H3 U2 H; r: y8 N绝对路径:/home/domain.com/
# S! ^& Z; e- R2 cwww.domain.com 自动解析到 /home/domain.com/www/
$ c( z* Z7 K" Q/ I( q- m1 B& s# D! t' r% babc.domain.com 自动解析到 /home/domain.com/abc/
" i5 I3 {' H8 {3 Z5 I$ W" w等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
/ Z& A% L4 r8 ~) s5 ~直接建立子域名名称的文件夹即可使用。不需重启apache。

返回列表
【捌玖网络】已经运行: