  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14221
- 金币
- 2401
- 威望
- 1647
- 贡献
- 1349
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:( _" H# {6 L% E8 M. K; D5 J
5 P6 D% G, g- z3 xRewriteEngine on7 |. _% Q" m& I* S2 X3 R
RewriteMap lowercase int:tolower
) M4 i9 M% U" p" o# r5 X' B. c0 n4 yRewriteMap vhost txt:/usr/local/etc/apache/vhost.map+ J3 J( ]) M/ M2 Y
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$, P0 m9 i8 ], O- ?! T
RewriteCond ${vhost:%1} ^(/.*)$
3 c& D, P0 S& j1 b8 x7 [RewriteRule ^/(.*)$ %1/$1& [" l1 H2 `" v! w8 r2 x
6 b9 r5 \- u& y. R
$ h/ }. u( w/ G$ Y" C0 Y. G8 }! X其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
6 W" {) w! C' I1 e6 B- p然后,在这个所在路径的目录下创建一个文件: vhost.map
$ J+ g! D) u4 x' | A: ]9 R) Z内容为:
% n8 p& N3 i8 ]5 [8 _* L- _* A" H. i: Y' n. z( j
www.domain.com /usr/local/www/data-dist/domain6 u: H% y! A) m
bbs.domain.com /usr/local/www/data-dist/bbs y ~6 a1 @6 s( r; ^& ]& l. |
anyname.domain.com /usr/local/www/data-dist/anyname) |0 ?- U! t/ p0 G9 q5 k/ b+ a: f( N# P
0 `& _. j: _+ T" N Z N7 c( K
以上部分都是:” 域名+空格+绝对路径” 的形式。$ f- j K5 k1 @+ ^& w3 w
/ [9 K* r& ?$ ]: w. B最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:' E3 b9 u" e0 I# m! q" Z
domain , bbs , anyname 等等,理论上可以无限。
( f' n2 w, s9 R" v( Y$ s% {8 Z# e+ Q8 j- j% s
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以1 e3 E( M& h0 N; S: f' q; Q5 k
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。" c+ `% `% C9 v" v, L
( S; N9 X+ p( ]9 L
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
( W) c, f1 o0 Y% q第二步:打配置文件尾部加上- y1 f" I& F% R7 u4 b
RewriteEngine on" d3 s% h; u( ?
RewriteMap lowercase int:tolower9 r% R# C, J* i" F% p
#定义映像文件% h9 f4 y2 o; i9 W9 x8 w- s: b
RewriteMap vhost txt:/apache/vhost/vhost.map! m' r4 h1 ^* ~$ W
#处理变名. X' x0 O0 b9 e, G) k$ l: A' U" h
RewriteCond %{REQUEST_URI} !^/icons/
- o. d9 W7 I' |RewriteCond %{REQUEST_URI} !^/cgi-bin/, A- q9 t5 e; i2 `
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$; B I! q$ v7 Z9 B% W$ r, h0 l
这里做基于文件的重新映射- z$ }8 ]( }9 r
RewriteCond ${vhost:%1} ^(/.*)$' s, V+ i# b* `2 j `
RewriteRule ^/(.*)$ %1/$1
4 M8 y6 @, I7 `RewriteCond %{REQUEST_URI} ^/cgi-bin/
% e( t; ]8 b2 q7 j, E9 \RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
; v2 N" `: X% ? J3 tRewriteCond ${vhost:%1} ^(/.*)$5 S7 Q2 l) y: j- q& y. E( q& e/ D9 o: f
RewriteRule ^/(.*)$ %1/cgi-bin/$1
6 o# S+ x0 F0 M, _" h
$ H7 m0 _2 Y3 G1 Y' J注意:vhost.map文件是域名和空间映像的文件,格式如下:
$ E6 |1 f, o2 P9 l+ J' ^www.abc.com /vhostusr/www.abc.com
% m3 | V1 ~# j9 P$ u% ^www.xyz.com /vhostuser/www.xyz.com1 N* `) q0 S) F5 w& z5 d5 Q* \
www.cccbbbb.net /vhostuser/www.ccbbbb.net3 u5 u5 H7 W9 U! q: [ g
. H% V N2 w9 n
.
- _" f6 L+ @& x/ m5 X/ B% \; G.
0 k1 z# \3 `2 |; v: R.
" E/ ^3 F% Y8 f& C/ l4 O% @ \. ^(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟); O+ h# h) U5 [; F
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~+ ^& ^: k* L- V6 a
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
% W2 F3 ?4 Q2 b& }7 h注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
9 X" [& }9 q9 i# x( W$ M============================================== v2 [) u% f1 o" l- ], p
方法二、 K$ P8 `4 j. P
" U& T/ _; j# J$ v [, T
% H D _0 X* ~! M; d! _
rewriteengine on
: e5 @6 B+ O: `6 \: @rewritecond %{HTTP_HOST} [^.]+\.域名\.com$7 K" @4 a5 ~( P- A/ d5 R
rewriterule ^(.+) %{HTTP_HOST}$1 [C], E+ r- E i- b2 d& i7 X! a' Q
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
5 d* o: a( Z- C1 Q1 u1 C其他配置文件4 K @- Y! b6 ~: I9 V4 F
. y: Q& Q4 m R. b接着在DNS中开设一个泛解析到对应的IP地址。6 U" s V3 u5 e$ G# `+ h& r
就可以实现下面的方案。8 \3 l) f1 c- m2 |& o' ?( e" O6 V
6 p- f+ F+ Y; k5 F- p域名:domain.com' T2 w N8 N3 G7 r7 E5 `8 S
绝对路径:/home/domain.com/
: @# L; p$ x# ~# ]; R5 K- Lwww.domain.com 自动解析到 /home/domain.com/www/5 E4 A( {( H4 e
abc.domain.com 自动解析到 /home/domain.com/abc/
: r0 a2 N1 U2 d. p+ c& c等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
. A( M+ b8 N9 d1 t( B$ u直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|