|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14323
- 金币
- 2447
- 威望
- 1647
- 贡献
- 1395
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:: J8 l# u# T; G& e3 J) e( v
% A! S; N6 T# oRewriteEngine on
. ~8 u2 y0 g+ m; W/ z( ~RewriteMap lowercase int:tolower
' I# E# p4 r( K( U8 {/ ]RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
, a( T* V# v2 w0 ^RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
- M y8 q. }$ r+ p8 G- vRewriteCond ${vhost:%1} ^(/.*)$% B, C( L# X/ O: A8 x! j
RewriteRule ^/(.*)$ %1/$1
2 B7 a0 d# K# V/ B& {- {
: N; d7 V1 C' @- M. j
0 W. E* Q' f3 z+ j/ M- J其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
* \( _3 X& P- P1 W( ]1 q5 Q然后,在这个所在路径的目录下创建一个文件: vhost.map9 z h8 i/ O s2 ^6 Z
内容为:
g z5 z1 f, K5 c2 {$ h0 F% a4 o1 \& V" q- ^% c+ q
www.domain.com /usr/local/www/data-dist/domain" u. u) w$ j. R j7 X
bbs.domain.com /usr/local/www/data-dist/bbs' }5 k6 ]9 T: ^' A8 b
anyname.domain.com /usr/local/www/data-dist/anyname" @& t3 R: A% Z1 `. K$ v6 M& f
6 E; P( ~, t8 K9 M) x, [ s
以上部分都是:” 域名+空格+绝对路径” 的形式。
/ Y. E* T! T6 A, P; M, O& P+ @3 H2 c5 [ w
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
3 j8 W. ]) Z7 adomain , bbs , anyname 等等,理论上可以无限。1 N0 d: u& `9 |
# G$ \$ O7 @& D9 |' t& [+ _
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
" N3 a* |3 _3 J1 @6 L2 i随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
/ R& I# N4 H7 z2 l1 S4 D6 ^6 Q9 f( ]# a) V& T( m1 K
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。1 G. L# G* K) W9 l9 Z* R
第二步:打配置文件尾部加上
* g& B& I5 O2 ?, H; c* DRewriteEngine on2 Z# ?5 u( A" s B, D
RewriteMap lowercase int:tolower" ^" p o+ |& u4 F' X
#定义映像文件
- l' u: o* ^( p, ^$ n* R" b4 IRewriteMap vhost txt:/apache/vhost/vhost.map
4 ]8 [6 m+ n: P1 q$ g2 y/ L#处理变名
' p; E4 W F! U! c2 m6 Q, M+ hRewriteCond %{REQUEST_URI} !^/icons/
3 L8 Q8 \, x5 j9 i+ n- _+ O9 nRewriteCond %{REQUEST_URI} !^/cgi-bin/
' f# v. d' V1 G2 o2 O& dRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
) v; D- h! c! i) y这里做基于文件的重新映射+ P6 Q7 x" [1 H' b* E" L7 d( W
RewriteCond ${vhost:%1} ^(/.*)$" t: `$ [) z, y$ D6 Z
RewriteRule ^/(.*)$ %1/$1
$ q2 ?% Z6 v7 i3 c% ?' bRewriteCond %{REQUEST_URI} ^/cgi-bin/
! x, S7 T9 v/ ~. ]0 GRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
, I, ?8 Y% V; g! n$ {5 i" FRewriteCond ${vhost:%1} ^(/.*)$, N2 ~! O8 t0 M* w* A1 i
RewriteRule ^/(.*)$ %1/cgi-bin/$1
# V3 V2 v! t" W4 r# F2 I5 L6 z) @" @. ]2 @. f
注意:vhost.map文件是域名和空间映像的文件,格式如下: " Z/ s+ R, s- D4 r+ @ x
www.abc.com /vhostusr/www.abc.com! Q: ]) R/ _6 N
www.xyz.com /vhostuser/www.xyz.com
" Q/ @: T+ G& F: ]www.cccbbbb.net /vhostuser/www.ccbbbb.net |8 {& z# B4 H' D* q0 b
.
* D& d& N9 G5 i& y+ v3 q' r4 d4 k: L. @0 b; f$ X5 M- |! g% c# \
.
3 o+ ?, R. L# }7 I6 I3 Z.
, T4 L. ]" E1 E) s(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)- N$ `7 F: I4 T* J
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~4 i, b- B$ O. u/ n7 j) Y
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
2 `3 A6 y) ~' T" j- Y6 S& A5 w注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~# G9 v" E# l$ t) h' O. l5 c$ g
==============================================
/ y+ T+ G2 k) T9 e方法二、8 u2 S/ C P$ `+ |/ a) j/ `
: i: a" s- a0 \
4 o. v+ z+ Z6 n+ {& g7 U
rewriteengine on
% E' D2 P0 N5 x) Drewritecond %{HTTP_HOST} [^.]+\.域名\.com$7 E0 [( J% B8 q" u" P7 W
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
0 n! z: q) m; j9 Mrewriterule ([^.]+)\.域名\.com(.*) /$1$27 [3 q5 k) T; P; _% O
其他配置文件
2 J0 Q, Y9 o! r0 @" W+ M
9 ^$ Z( a: G; M接着在DNS中开设一个泛解析到对应的IP地址。- F* I" ]9 C: m; H% x u5 s
就可以实现下面的方案。 @; n+ c1 P% _' L
# v( h2 q, b& ^, V7 T! Z. Y" H域名:domain.com7 n% g* g1 ]% Z! R& o
绝对路径:/home/domain.com/
1 |! W) O, X+ x5 c+ b% ~% t! a; N' gwww.domain.com 自动解析到 /home/domain.com/www/) H. H$ H* _' s& K
abc.domain.com 自动解析到 /home/domain.com/abc/
& f( {0 U0 M! u6 b5 O" ], Z' g0 Y等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹% i* R/ q0 h7 |8 N: K
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|