  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14219
- 金币
- 2400
- 威望
- 1647
- 贡献
- 1348
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
" B5 B( f: k; p2 s; N- {; l
9 Z' z+ i+ h: p7 X( fRewriteEngine on6 e0 L# ?' O5 Y
RewriteMap lowercase int:tolower9 |, w- d; ?! p J: z7 W- }4 o
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map% n) Z# m n; _* `; P# N, \
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
+ M, ?( b' u7 H& l0 hRewriteCond ${vhost:%1} ^(/.*)$
3 J& k* W i% D. h- i6 b/ }* bRewriteRule ^/(.*)$ %1/$1
2 I6 o) z8 p. I% \$ Z) @. A+ F* Y' n
" t3 \8 C5 A s' t8 o0 v
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
4 Q% _4 n( y! \% i- q! J" b然后,在这个所在路径的目录下创建一个文件: vhost.map- Q. }& J5 G$ ^9 R, ~! k- c
内容为:
1 c1 u& w/ u* N
" {' V, S ?5 w) g6 Twww.domain.com /usr/local/www/data-dist/domain
4 @1 v1 F" f1 [0 }) ?' B A; wbbs.domain.com /usr/local/www/data-dist/bbs
4 s9 o4 {3 j$ j. x) O; Eanyname.domain.com /usr/local/www/data-dist/anyname
- i" I$ H. ?* ?, G
$ M( s/ X( p7 y以上部分都是:” 域名+空格+绝对路径” 的形式。4 M: R ~& G& z6 Z% H2 M
! D% H/ N# H, t- q) z' B1 d) u
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:( ~6 N% h7 l5 p1 a& L
domain , bbs , anyname 等等,理论上可以无限。/ E0 J( Y9 o$ D
4 o# E$ s9 o2 N5 R" \这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以- g" J* s- R, t
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
! S8 }' P, a0 W) y9 c) M; N* v1 _- Z: Y6 k! ]( M. [* y
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
1 M5 F: S2 Y6 @% T0 P* Y第二步:打配置文件尾部加上
m0 e8 s, n# b; C0 K+ w( zRewriteEngine on
7 r4 z: S K( F c2 NRewriteMap lowercase int:tolower. x/ F% s5 u# ?) B; C
#定义映像文件
$ j$ ]+ ?+ h, ~6 X8 Y- n" F, i. }RewriteMap vhost txt:/apache/vhost/vhost.map7 f0 |; c3 s* `
#处理变名
' X- _" p3 Q8 e. L& v$ v% e+ U8 fRewriteCond %{REQUEST_URI} !^/icons/" ` m3 f+ K* |/ u
RewriteCond %{REQUEST_URI} !^/cgi-bin/
! {; E3 p) L5 yRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
2 D3 E4 d; g V; m2 U$ B% _这里做基于文件的重新映射
3 \/ X0 W1 U8 E- F0 g# uRewriteCond ${vhost:%1} ^(/.*)$% R' K0 W8 R% q7 L0 ^7 {8 X( d/ h' @1 y
RewriteRule ^/(.*)$ %1/$1
/ e% z9 K3 }6 M! r# qRewriteCond %{REQUEST_URI} ^/cgi-bin/+ ^6 _: Z0 P4 _9 ]& G# K3 D
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$* p, H- ^" Q [" `4 V# E: \
RewriteCond ${vhost:%1} ^(/.*)$
0 r7 D3 x# w; a1 c. GRewriteRule ^/(.*)$ %1/cgi-bin/$1$ N* f+ d) u/ n, C9 Y% l
/ H" X; h& b% w, M, h" [( }注意:vhost.map文件是域名和空间映像的文件,格式如下: 6 [1 Q, T/ y6 G
www.abc.com /vhostusr/www.abc.com4 n9 F/ c3 `8 z+ G
www.xyz.com /vhostuser/www.xyz.com1 K" V$ G0 r. H. t" I' u
www.cccbbbb.net /vhostuser/www.ccbbbb.net
2 Z/ w) g# N0 I0 L6 @$ n.
' J o) g; a5 `/ n0 x.
. y! u5 C5 x3 e( S( S R.+ h- i& c; B7 T! q, i* x- S+ s
.
. A) r, W; T/ k$ M. z(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)7 z; m R" ?: N: S% b
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~) ?2 k% G- ^5 G
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~/ X8 t, q6 \3 N3 q- _( ?
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
) y$ ?9 d% G$ `* q) H==============================================4 T1 B6 \; `, @5 t6 h
方法二、
/ G0 J0 N5 B3 S8 T7 d" ?) |0 Z. G, B K5 m. P1 H- s1 c- h
/ ?) W& |& L& \0 \2 mrewriteengine on
. d' V0 [1 {9 T. g4 J6 lrewritecond %{HTTP_HOST} [^.]+\.域名\.com$
8 i0 d, k: ^$ S/ t6 ]) ~rewriterule ^(.+) %{HTTP_HOST}$1 [C]
( o: H+ S2 Q8 _% N& Y6 {5 t) `% _rewriterule ([^.]+)\.域名\.com(.*) /$1$2
% ^: p: L; N) ]/ y其他配置文件$ q9 e0 i: o0 h( j$ J p
4 B7 T& c) R% O8 F+ B: ^
接着在DNS中开设一个泛解析到对应的IP地址。
3 [4 U) |+ q' |0 Z3 b9 j( g3 A就可以实现下面的方案。' R) |2 ^% C5 w7 B" B8 e
7 j; L/ s1 k2 ]( p" D' r# O/ E域名:domain.com
0 q) `$ e' M- P绝对路径:/home/domain.com/ i5 F- L) j+ q7 h' A; E- Y
www.domain.com 自动解析到 /home/domain.com/www/
1 } V' x, ~+ p4 j, X" }# w3 j4 l4 `abc.domain.com 自动解析到 /home/domain.com/abc/
' D5 f, Y- J# }* |; P b. x. c4 d等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
2 F& I; T6 V- P6 d直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|