  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14221
- 金币
- 2401
- 威望
- 1647
- 贡献
- 1349
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:5 r/ R% p( p5 R. M- |% d
! x, }4 Y2 Z* ]3 O
RewriteEngine on, f" [; Y5 h3 ]$ t
RewriteMap lowercase int:tolower
! s6 n7 C, j( K8 @) I) x0 n( cRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
8 L F& p' _ N! H5 g; VRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
! ^( D L# k( V2 u. r# |RewriteCond ${vhost:%1} ^(/.*)$& f7 B9 U( Y, |+ s/ X
RewriteRule ^/(.*)$ %1/$14 |6 M( _" v5 e* F
0 }- C5 W2 y+ L1 O) W5 G' ~& F$ r8 [) y6 t
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
6 f) b9 q4 s3 n. [& Z然后,在这个所在路径的目录下创建一个文件: vhost.map. x/ T' Q& M5 c/ M1 Z) q* p( g7 [
内容为:
" @3 t0 ~: z$ S% O0 C
, l% Q& f6 Z) P. K/ S$ s. W, ?www.domain.com /usr/local/www/data-dist/domain
3 h" X4 T' J: i D9 Sbbs.domain.com /usr/local/www/data-dist/bbs
# N8 c1 E" ^$ E) Eanyname.domain.com /usr/local/www/data-dist/anyname
$ U! g( q6 x6 }) m. b; R
& f/ _; I$ x. A! g7 C: H以上部分都是:” 域名+空格+绝对路径” 的形式。
) s8 R6 a3 L0 K) ?- M- T: v [; ~9 J; U7 K h; N7 X
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:) x" H+ Z. M% N; |7 D' \
domain , bbs , anyname 等等,理论上可以无限。. P2 j& }: o0 t3 }2 @& I
" J/ K, `/ c2 P# \* {4 [" L4 S+ b! b4 Q这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以4 A/ G: [4 b- W. B' O
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。' ^; l8 T. `1 d4 o
/ h# V0 r$ T+ Q6 i1 t1 W* f# r第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。" l ?& u! f5 k' L
第二步:打配置文件尾部加上
! V( S. y& L1 L9 _& s H3 W! M; d mRewriteEngine on
1 s/ L6 U' i; B2 g" gRewriteMap lowercase int:tolower( z; o9 D$ k4 ^. a, i
#定义映像文件+ W' ^/ K; E2 a# `5 Y
RewriteMap vhost txt:/apache/vhost/vhost.map
& h% S$ P* J+ r$ q& `* p- X#处理变名
; E" C# w# Y$ M7 o+ x2 lRewriteCond %{REQUEST_URI} !^/icons/$ E: ^4 K. J& d8 h. v0 j7 y
RewriteCond %{REQUEST_URI} !^/cgi-bin/
4 e) t4 ~4 I* A6 R4 c0 lRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$2 K' m8 j0 _; Q+ ~* x0 c
这里做基于文件的重新映射3 P& b2 k$ k: H$ C1 p4 K
RewriteCond ${vhost:%1} ^(/.*)$
7 `4 v" B1 w8 l: [6 ORewriteRule ^/(.*)$ %1/$1: M; P2 ?) b9 e" C6 w
RewriteCond %{REQUEST_URI} ^/cgi-bin/: d V$ B3 F8 z# ]0 O2 L6 i
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$5 s+ x, O. P) z
RewriteCond ${vhost:%1} ^(/.*)$5 y$ K9 x( [3 u6 {4 }5 V& v, G
RewriteRule ^/(.*)$ %1/cgi-bin/$1
+ b" L9 s8 O% b% \& t; A% ]9 c8 H) U" B
注意:vhost.map文件是域名和空间映像的文件,格式如下: 6 u* P& U4 ~, l4 ?# _
www.abc.com /vhostusr/www.abc.com/ }0 z$ X- x& H( [3 |: L/ M5 b
www.xyz.com /vhostuser/www.xyz.com4 R( j3 B1 ^9 J3 c
www.cccbbbb.net /vhostuser/www.ccbbbb.net& H2 Q4 |) Y: \) Y$ N S
.
- x- g2 T, \! F3 d.
3 o; V* W: r8 J+ P. d# c; P0 M.
) ^3 O, Z7 A$ D$ S4 ~.9 x! b8 L% B+ W+ i9 U1 @4 b
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
5 i- t# z$ A* [& N0 ^3 v3 N0 f第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~" @! I3 y( F2 d1 W5 D" n
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~* v+ O, L, Z" C3 C. U
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~: a H/ R7 H& i0 R; x
==============================================
. ~! f8 o% w! l方法二、
4 l' n; s* I3 V& Q+ |( u
- h2 [. u0 h% V3 D8 E& p
: |- Y- g/ @3 M% a; crewriteengine on$ q" A8 [% {# B+ J: j+ R) v0 ?
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$/ N/ [) y8 O0 H s8 d2 ]
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
) r* F- ]$ M) D; y- A, Jrewriterule ([^.]+)\.域名\.com(.*) /$1$2
2 P1 k& `+ {9 y$ [( Q其他配置文件
* a* Z) @% C- X& j' `& w9 b* W* Z6 T
接着在DNS中开设一个泛解析到对应的IP地址。
9 A1 y$ [, Y: k/ k6 ]* r9 d& T就可以实现下面的方案。0 [8 x' {( e f
7 P' ]- ^+ {% u- f+ h
域名:domain.com' Z/ R8 @" S. i0 e+ d: K% N
绝对路径:/home/domain.com/
8 B4 M( p) ~- |! m% b4 m/ t* ?www.domain.com 自动解析到 /home/domain.com/www/
) C! v6 F# t8 ~9 Labc.domain.com 自动解析到 /home/domain.com/abc/
5 o1 |. A' I+ H3 l2 ]" J8 b1 j; {( U等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹9 h3 ~, U" C) b4 P c
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|