|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14433
- 金币
- 2502
- 威望
- 1647
- 贡献
- 1450
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
G T9 S% K) n8 p) `1 g+ Z4 N# y/ @$ K
RewriteEngine on
) U# O9 Z; Z! `; MRewriteMap lowercase int:tolower' R+ w8 Q' }) i9 j1 `& o
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map' f. h' \1 e( F
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
6 ?7 @+ @1 ~; R7 s3 t/ Q6 ^' wRewriteCond ${vhost:%1} ^(/.*)$; x9 z+ i6 m5 p5 E8 j8 r
RewriteRule ^/(.*)$ %1/$1
! ?6 W) L c5 m& ]) ]( w3 r6 G1 \1 F. h4 g
! v; K: J$ u# Y其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。9 f7 A: p8 H, P
然后,在这个所在路径的目录下创建一个文件: vhost.map
0 Z. w3 w; }7 S3 R6 e1 G) d% ]内容为:
" V$ l& o4 ?8 M- \" c" ^7 A/ o' C& I) h
www.domain.com /usr/local/www/data-dist/domain
0 ?$ D$ Q: E- \9 ^/ h% c6 Fbbs.domain.com /usr/local/www/data-dist/bbs
& b- i% H# X$ L( xanyname.domain.com /usr/local/www/data-dist/anyname
4 e( _- ~/ h! f& M( Q5 r) K: A, f
以上部分都是:” 域名+空格+绝对路径” 的形式。
7 V7 s( ?- e! N' U4 v! K; m5 D( x9 ]/ J) j
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:: e9 }4 ]- ^4 ~2 S4 ^
domain , bbs , anyname 等等,理论上可以无限。% A @8 }: P7 z! o& T. p% y: I3 y
$ c/ \! k! S- O( J3 V4 ^这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
. ^) Q, D- H L1 @! i4 }' f; }+ i0 _随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
0 L5 m+ ?4 M: H: ]
: h8 _4 g3 D- s. x; J第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。 t, k( c7 W0 Y( U' l$ F
第二步:打配置文件尾部加上
L. l' J9 V8 T: ^+ M+ R) VRewriteEngine on. U' `" y* P p+ Y: d$ X
RewriteMap lowercase int:tolower( b9 m' j3 p& U; K$ J, a0 K
#定义映像文件
& B; @8 Z" [8 S0 J5 E! b0 ^ R8 Y9 FRewriteMap vhost txt:/apache/vhost/vhost.map( ^$ G3 S: L$ ^; e9 R5 ?
#处理变名
, m; Z0 z) s& X5 y% R) SRewriteCond %{REQUEST_URI} !^/icons/
: u' l( M3 |0 ]' I9 _0 F- aRewriteCond %{REQUEST_URI} !^/cgi-bin/! ? R8 t+ o/ v! y1 L2 l0 V+ y
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
: Y1 _6 O* ~! q0 v+ u这里做基于文件的重新映射
* R! a. d$ o+ X) U) m# zRewriteCond ${vhost:%1} ^(/.*)$3 z$ H, M% R6 r6 h) p! @+ {' ^3 R
RewriteRule ^/(.*)$ %1/$10 ~3 K6 i2 o L% z6 C* _2 u1 \
RewriteCond %{REQUEST_URI} ^/cgi-bin/5 j/ A" y# |" s+ |
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
4 P9 N1 v f& [2 l+ i, ^5 g0 MRewriteCond ${vhost:%1} ^(/.*)$# {8 d. u8 [6 l) _: \' u
RewriteRule ^/(.*)$ %1/cgi-bin/$14 F t# j' S+ [ c" c/ C
) P2 O; C m6 f$ P: u5 t
注意:vhost.map文件是域名和空间映像的文件,格式如下: 7 a( L4 P. ]# u6 ~* q
www.abc.com /vhostusr/www.abc.com
( _2 Y9 M" e! f; W$ ?www.xyz.com /vhostuser/www.xyz.com8 R9 T8 q1 X7 C( e8 _
www.cccbbbb.net /vhostuser/www.ccbbbb.net4 Q# f" `5 [" P6 {
.% \+ y" u' y1 X2 l, i$ V( U
.
1 q% f2 z6 s3 `" a.
. A1 ^: h6 o+ g" |; W& _' z7 n6 d.
) n+ ~! {3 V' U( s1 {. H(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟), _5 B! l( K; S7 K! e. K1 r
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
+ L! n2 c; Y6 ? F; A( _其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
" y& D, P) i; g: h. w L9 ^注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~1 S% o% W! T3 t) C8 \% B6 C
==============================================2 b7 t, w, k* q$ U( ]
方法二、
5 e+ r0 G( v9 T: t4 y2 s* T+ V* f# K, c- w$ z n& H9 U3 ]
! T2 h& \- A0 `1 b2 F
rewriteengine on
: [4 F) Z8 d! s8 C6 T5 i( S: b trewritecond %{HTTP_HOST} [^.]+\.域名\.com$
) T( S& E$ F- k. Drewriterule ^(.+) %{HTTP_HOST}$1 [C]4 [ S' D1 G. I+ r8 Q+ Z
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
" V, V* W; e9 e x其他配置文件
# I* S [% D& y; _
3 B- P* D0 \" j2 i/ n( C接着在DNS中开设一个泛解析到对应的IP地址。
% z: {: b( H. R. C" x# S" u就可以实现下面的方案。
4 t% \" k# }9 `- P; o' R. U3 t0 }; C+ y; ]
域名:domain.com
0 X' s- E5 Z# n" b绝对路径:/home/domain.com/* ^6 S! _( J( z1 B1 F
www.domain.com 自动解析到 /home/domain.com/www/
/ v* E( H# \4 j9 b, f# yabc.domain.com 自动解析到 /home/domain.com/abc/+ }0 x( E8 r* m1 E# p6 o
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹& F8 ^9 d1 o7 g' Q+ W1 z3 [! q2 R
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|