|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14391
- 金币
- 2481
- 威望
- 1647
- 贡献
- 1429
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
) k& u" D% z! L) _# p9 Y, e# W( ^, g) w: S
RewriteEngine on
( J, A( J: ^1 A8 hRewriteMap lowercase int:tolower
0 G7 f0 Q4 h" ]( |$ e, x' dRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
# n6 {4 X8 o$ t0 J7 P! i8 IRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
`; _( w0 i/ s: KRewriteCond ${vhost:%1} ^(/.*)$
" v: |- g% W$ d! Z" O+ fRewriteRule ^/(.*)$ %1/$11 @* M& o. T8 a. N: }
$ I& U9 r8 x) P. L8 f8 a7 w* p% D1 X. h+ r! s
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。2 R% d0 p/ R- J3 D+ |) T
然后,在这个所在路径的目录下创建一个文件: vhost.map
# G) s+ l2 M- L7 D内容为:$ t9 p6 Z& I1 {6 R6 [9 I5 r6 w
! a0 U- ? I- M$ |
www.domain.com /usr/local/www/data-dist/domain* X6 N9 R% [4 K; Y1 z* A
bbs.domain.com /usr/local/www/data-dist/bbs
. ^3 z; k# s1 [7 d2 p; janyname.domain.com /usr/local/www/data-dist/anyname
# Q( L, p# m, \' e( x- P& ]
$ ]9 E/ W1 ]( k3 d! W以上部分都是:” 域名+空格+绝对路径” 的形式。. u; a. q8 U' w
7 y( @; [; j2 h" I- ?最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:, j) m" K1 |" J; e; i
domain , bbs , anyname 等等,理论上可以无限。
, l& E/ m; j& p4 W
0 q, |0 c) `& K/ a# i0 p这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
3 l+ [) M. a9 g: ? c6 e( r随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
( P6 b% Z6 ]* ]2 _1 i; S' G
6 `' }5 B7 T w2 ]- T" E第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
% o) f! C) K$ P5 ~5 z& m4 ^8 U; H第二步:打配置文件尾部加上! H' j! T( Y C. X. n" D
RewriteEngine on
* ?: C! T# }. YRewriteMap lowercase int:tolower. v' `1 n/ t+ L9 d( W, O! b7 D
#定义映像文件
& k$ q! g( x9 ?- e+ ARewriteMap vhost txt:/apache/vhost/vhost.map
/ B" \7 v6 _- c& c3 H! M4 L#处理变名
; r' s/ I: Y# e/ v3 U& I; ERewriteCond %{REQUEST_URI} !^/icons/6 [) w; m) e& @: ]$ _
RewriteCond %{REQUEST_URI} !^/cgi-bin/3 k* i; S! z* b& @% ^
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
1 \9 ^ X3 @% Z7 J5 W4 i这里做基于文件的重新映射
- C1 `: p0 C% |- s) |, W3 Y: ^RewriteCond ${vhost:%1} ^(/.*)$8 t6 V4 q* ?- b O( S
RewriteRule ^/(.*)$ %1/$1
" N8 V( T4 p9 G' C8 D# k2 m/ `RewriteCond %{REQUEST_URI} ^/cgi-bin/
' g7 T5 q. g5 T3 Z$ K$ NRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
) P3 _# a1 E; p8 W7 _RewriteCond ${vhost:%1} ^(/.*)$ e7 \+ y+ s# \1 @3 s4 X& \' T0 F5 B8 c
RewriteRule ^/(.*)$ %1/cgi-bin/$1& X+ E$ A' H3 u0 H5 }
6 D+ z$ E9 p# n
注意:vhost.map文件是域名和空间映像的文件,格式如下:
6 W6 J/ B; [; E" R% F- U0 rwww.abc.com /vhostusr/www.abc.com* ~( \1 l3 @1 ?; a$ M* l- E
www.xyz.com /vhostuser/www.xyz.com6 O' c8 `! i0 K0 D
www.cccbbbb.net /vhostuser/www.ccbbbb.net
' q1 M) @' J. @6 [8 }: ].) E, R4 o4 `& [' P: O5 r
.* {0 l, B0 b" c3 ]/ _; J9 n; d+ u
.
. g; ^" u( ? l+ N6 Y$ @.) f+ ^' h4 h, @5 o9 L* t( ~
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
# g) m$ U0 d" j5 _/ U第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
7 A8 a4 ~ x( ?' O. R z其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
3 p1 C4 i( G0 x9 f+ W注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~6 `, H* h& _; Q9 C8 A% X
==============================================% A- i* X3 A8 h) N1 A
方法二、
, ~0 v* h- ~( y5 Q- M0 u" G) ^/ k# n
3 k0 J, q! L; w( J1 c- h" A# w( c f) \) `
rewriteengine on3 s+ }, O$ }3 ~/ g; Z' n* l0 D
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$5 {5 A5 ~9 {4 _3 e7 a. p
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
s( f% p! Z crewriterule ([^.]+)\.域名\.com(.*) /$1$2
9 s8 v% y& h; E- f其他配置文件/ l5 u# e" @4 i& i* X+ a
! G( \' D- h7 U, j# L接着在DNS中开设一个泛解析到对应的IP地址。
- \" L/ d! q- Q; L: A就可以实现下面的方案。3 n4 h6 j! f, M6 d+ Y: O
6 E1 { a& O4 E% J |) x7 S; G
域名:domain.com2 l/ K4 V- U; e
绝对路径:/home/domain.com/- w. ]' y- W# O. n$ k
www.domain.com 自动解析到 /home/domain.com/www/
3 `+ x- {7 N- E! n9 X# _; e9 Kabc.domain.com 自动解析到 /home/domain.com/abc/! E, J# a: _% D/ a. v/ h. g
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹3 l1 y, \9 f' A; O
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|