  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14159
- 金币
- 2370
- 威望
- 1647
- 贡献
- 1318
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
0 |) P7 B) u7 P" F0 F
6 U" E+ G6 K# fRewriteEngine on
) C, a% W; i6 p. G# {4 k! A. lRewriteMap lowercase int:tolower
$ u2 }. g) L o5 }/ Q. ARewriteMap vhost txt:/usr/local/etc/apache/vhost.map' B; u* |- m! H
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
/ L" X% C' t/ W/ p& Y- kRewriteCond ${vhost:%1} ^(/.*)$
5 X6 I; t& M4 J5 E- f2 L8 X* yRewriteRule ^/(.*)$ %1/$1( N1 {9 b; u; d. m
3 I7 _2 P* g: ?
$ s( O. r/ d" [
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。" @" M" Q, N7 ^. ?9 t
然后,在这个所在路径的目录下创建一个文件: vhost.map
v4 A5 A9 E8 |/ f- j( i9 L内容为:
' j" T# W0 z! C. q" L* k% z- S; b5 A& U1 ^
www.domain.com /usr/local/www/data-dist/domain' u0 \9 T& E+ S1 l( Z' |$ H/ ]$ w
bbs.domain.com /usr/local/www/data-dist/bbs
0 {. g9 d: H' i( l+ f( U9 ]( lanyname.domain.com /usr/local/www/data-dist/anyname
# K! v0 \( P x5 H- {
, N3 y. @' Z5 X8 `2 w0 y/ l4 @" k% ?以上部分都是:” 域名+空格+绝对路径” 的形式。
) \$ m: n" |2 h: B0 t O0 f* ~5 o
" R8 b' e% o# k最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
% F# @0 q1 V% C8 u# kdomain , bbs , anyname 等等,理论上可以无限。8 |' Z4 d) P4 q) ]" c
& o- y' v5 J# u W+ i; Z! i7 z这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以9 E: k4 w* H; P; ^3 M" q0 U- E" X
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
1 u, D) m3 I' s) j* z0 @# U: c+ q+ ^$ d, ^6 n/ z
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
! T/ x E4 f c; }+ m5 `* y第二步:打配置文件尾部加上8 |# k3 ]9 @, G
RewriteEngine on
2 `. W; ~2 Y9 X9 cRewriteMap lowercase int:tolower) e. O( S9 k1 ~
#定义映像文件
; `- W$ L) X* k9 | LRewriteMap vhost txt:/apache/vhost/vhost.map$ T, b( R# u8 ]. z- @" m' Y9 V
#处理变名4 F/ h- Q3 }! R
RewriteCond %{REQUEST_URI} !^/icons/
( `: H2 z$ f# sRewriteCond %{REQUEST_URI} !^/cgi-bin/& ?' o5 `) U4 K8 ~
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$$ g' E+ P/ Y# U9 w. \5 |
这里做基于文件的重新映射
7 Z, D5 A$ [: G B1 W# bRewriteCond ${vhost:%1} ^(/.*)$5 S: S9 x' M9 J
RewriteRule ^/(.*)$ %1/$1
# Y; B* o8 p, O- qRewriteCond %{REQUEST_URI} ^/cgi-bin/
3 f7 e5 n& d( O9 Z6 {RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
( K: c [" \4 n+ ?+ p! Y1 xRewriteCond ${vhost:%1} ^(/.*)$
# c2 k* x: T+ ZRewriteRule ^/(.*)$ %1/cgi-bin/$1/ N( ]$ ]) v* F/ R/ o
/ {& }4 G# g9 K
注意:vhost.map文件是域名和空间映像的文件,格式如下: 5 W2 e/ @, u2 m3 k
www.abc.com /vhostusr/www.abc.com
1 U8 E# J, D- ~6 D2 g; Zwww.xyz.com /vhostuser/www.xyz.com8 W' {! A% ]# K# j2 ^
www.cccbbbb.net /vhostuser/www.ccbbbb.net
. Z( {; v# _& v+ \5 L$ J/ C; A; D.
% c5 p1 Y( m" q' \.% c0 P4 p$ A& a0 K) R! \
.4 `' N0 i- `' z/ f" h* P
.3 f5 b3 B6 \: x! ~
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)& W2 A* L2 X: _
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~9 }& {/ [+ j/ v: @# @
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~0 d, K: w9 Q X& v( n9 e/ b" Z
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~1 |3 {. q. l" R! r# [0 B
==============================================$ Q A9 j% d$ [6 K
方法二、9 s9 x7 N+ H( F, ^* f
3 J! G P4 Z9 x; w
* u) g( V4 u! rrewriteengine on
5 i( p5 n$ z' U! Arewritecond %{HTTP_HOST} [^.]+\.域名\.com$
# r5 t U" I/ H5 h% p: `rewriterule ^(.+) %{HTTP_HOST}$1 [C]; O. [3 Q7 O; i1 u6 A
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
- i' c8 s0 h/ W; X; @" {' f* T其他配置文件# |; ~+ `$ w$ j+ ?* O7 L
4 B& [4 H) `) p" L; m接着在DNS中开设一个泛解析到对应的IP地址。
?6 j0 E& F% Y$ `2 W: a( C5 x; v0 U就可以实现下面的方案。
# ?: u- q8 ], \* Y3 g1 `- C( Y. w# C/ X2 f' y# a8 F z
域名:domain.com
* r: f0 P6 z2 B6 {) g9 V绝对路径:/home/domain.com/- M9 E0 ^9 P* S3 y* ]6 o! O
www.domain.com 自动解析到 /home/domain.com/www/. n, c4 ^; B' {% Y9 i
abc.domain.com 自动解析到 /home/domain.com/abc/
1 c8 y1 a! H# [等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹, K) A- L" m6 X
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|