  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14151
- 金币
- 2366
- 威望
- 1647
- 贡献
- 1314
|
独立主机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。 |
|