  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14221
- 金币
- 2401
- 威望
- 1647
- 贡献
- 1349
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
, X" }/ C. D( r0 `+ F% `2 y0 u) m8 F
q4 G' Y4 ^, SRewriteEngine on- R. r6 ^5 O; q# O& w
RewriteMap lowercase int:tolower- m6 E' R/ H5 E
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
# `/ h- p+ V+ T; K B, }RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
' L3 X+ b" S! A( Q3 ~RewriteCond ${vhost:%1} ^(/.*)$! Y+ x& {4 ?$ n9 w6 A( g
RewriteRule ^/(.*)$ %1/$10 i v9 {0 @( {2 G: ^
8 U% U4 s7 L; B- ]; N4 V* Z
8 |; ]) {9 }6 P) l3 }0 X其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。; E3 u$ x& t2 y5 V: s; V
然后,在这个所在路径的目录下创建一个文件: vhost.map% V1 m- m8 S7 a/ z& C
内容为:
( _2 i6 M7 Q! v: ~ a) E3 m* @) D( y1 C' Q& }2 N# T
www.domain.com /usr/local/www/data-dist/domain
& B, ^! f# R; W# U) Zbbs.domain.com /usr/local/www/data-dist/bbs- m2 L1 I' P: X' e' K
anyname.domain.com /usr/local/www/data-dist/anyname
& M3 `: Y) ]# r U! N4 J4 I
) {' ~5 i: l, j" N* \以上部分都是:” 域名+空格+绝对路径” 的形式。
( O T# T' n. ^
' n& }& j2 I0 K7 {9 i最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
2 V7 C4 B/ M( o/ Q% Odomain , bbs , anyname 等等,理论上可以无限。7 `7 @7 n! T* }- M$ a
, d. h' i ?2 K# k这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以5 @ d5 g+ [/ y
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
. a7 Q& m- F- q! ?+ E+ U) _6 X
' J E3 S1 u9 n第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
% Z! }+ \5 w. h) H5 q第二步:打配置文件尾部加上8 N+ |0 Y0 ^& I+ `: _
RewriteEngine on
5 P! C2 _3 [' c- M, W' ^RewriteMap lowercase int:tolower# ^3 _$ E# z0 I8 F# y
#定义映像文件
) z% |8 {( t2 mRewriteMap vhost txt:/apache/vhost/vhost.map
* _3 o3 J6 V! l+ m#处理变名
) A. C4 i Q8 c) D& zRewriteCond %{REQUEST_URI} !^/icons/
! H8 F; ]1 M/ d* Y! }RewriteCond %{REQUEST_URI} !^/cgi-bin/, m8 ^! J$ n. k+ \2 ?5 q
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$3 y1 J# ?8 M" {7 Y- K
这里做基于文件的重新映射0 |/ E5 [! i- F; g
RewriteCond ${vhost:%1} ^(/.*)$
2 U e, F" g' `9 x/ A; ARewriteRule ^/(.*)$ %1/$18 F" `* m# ~. ~- U6 A6 d
RewriteCond %{REQUEST_URI} ^/cgi-bin/$ |, f: k3 n2 g$ q7 v
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
K) m1 h, ]' y3 M; VRewriteCond ${vhost:%1} ^(/.*)$
, f7 }# L# s$ u! c3 j( ~RewriteRule ^/(.*)$ %1/cgi-bin/$1
) J. ]" b# B3 q, @- x) }, c1 h% `! }
注意:vhost.map文件是域名和空间映像的文件,格式如下:
7 d. d: \# E/ |: nwww.abc.com /vhostusr/www.abc.com
; d- k1 o. v& `www.xyz.com /vhostuser/www.xyz.com1 v7 V8 w' K, ]! _' m0 q
www.cccbbbb.net /vhostuser/www.ccbbbb.net. T. D& `9 n5 g" I4 P) \6 {
.
( |6 n% [0 G/ J4 j& w.
* ]$ C5 ?) W8 A0 q! ]5 ~) @.2 \4 P" M& N$ g% X& ^* b
.
+ d/ }; `2 q" Q" V) L/ b(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟); D. D, t( C0 U7 m8 T* N$ J
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~# o$ K$ {$ @- F4 P: ~$ X. T7 n9 w2 `
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
0 `$ f7 |& X) c( n# R/ [% v注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~. A/ k) z! X- X$ H. g8 ~; x
==============================================, j: _4 \5 W2 f. m6 c* ]
方法二、. H3 L4 r8 M% {9 j
, C6 D: ]* N# X! M( Y+ j3 b
: j+ Q! C6 b( f x( ?8 N. `rewriteengine on7 C2 ~* [& N+ b
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
, k! _) f' d6 x: Yrewriterule ^(.+) %{HTTP_HOST}$1 [C]
( ^ Z* t: b7 f4 T; j n& Trewriterule ([^.]+)\.域名\.com(.*) /$1$2) Y6 U4 u% C3 H8 J# e
其他配置文件7 n$ O7 ?5 l9 z( ]( @9 N! R$ @
t$ y* s& T& T! o/ u
接着在DNS中开设一个泛解析到对应的IP地址。
8 C8 B. V( J3 t2 i. x# P就可以实现下面的方案。
* M( M! U- R. G' B+ x* V0 b; T1 ~% m/ i4 e3 d3 N+ X" a' W
域名:domain.com) N4 D+ T- Y! o& P9 B* \, x4 {/ U
绝对路径:/home/domain.com/1 N) @+ Z: L! F+ I* `! A% x. v
www.domain.com 自动解析到 /home/domain.com/www/
1 B: c7 O3 c6 K4 babc.domain.com 自动解析到 /home/domain.com/abc/" P9 J! D* Q, G* d# W8 N' b
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
. J; { W+ G* ]# ^3 f直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|