|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14321
- 金币
- 2446
- 威望
- 1647
- 贡献
- 1394
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
+ Q9 q8 p4 ^- T! ^+ ?/ P5 o- L, i2 o# l1 y5 C: L+ t
RewriteEngine on% B( \0 a6 Z, ]' I3 S
RewriteMap lowercase int:tolower1 \- }; y, i) X# ?
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map" z, S1 i2 A" B0 W
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$$ g2 M9 T/ `# [4 f: \( C# m8 ^
RewriteCond ${vhost:%1} ^(/.*)$
, e6 r. } R- G) C6 sRewriteRule ^/(.*)$ %1/$19 M- X6 V$ d. X
7 `. O2 r# p+ H
3 A5 Q4 ~' [4 n* i0 B4 [4 O其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。8 j* a; B5 l# c- }. U" s
然后,在这个所在路径的目录下创建一个文件: vhost.map6 X W6 z0 M: I' n& l: k: L
内容为:* B N8 k7 H3 j" y: z
7 N( w+ H m' Z% swww.domain.com /usr/local/www/data-dist/domain8 i8 q R! M$ m; h- j+ E, f
bbs.domain.com /usr/local/www/data-dist/bbs
# d, C1 H; N# R+ S- h' d, ianyname.domain.com /usr/local/www/data-dist/anyname
0 z7 H6 Q- F" v6 y3 g
7 [- ?3 r. M# [- Z以上部分都是:” 域名+空格+绝对路径” 的形式。$ |1 ^. t3 P& n) q1 i! b3 L$ u! `2 M
% B7 d) I" v- z( Z7 [4 `2 y# ]/ |1 ^! S最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
7 q" K/ g, B; E* E6 |6 m" \% wdomain , bbs , anyname 等等,理论上可以无限。
/ b7 x2 p! n' `) V* ?. o& P* j5 x9 h+ _1 @5 U- a
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以: |( q" ?) g( D- ~- I+ a+ d3 l
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
% g7 C* z/ C0 t0 @/ V1 \3 u0 e- _+ _* V3 i+ y
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
! y/ z5 l) ?) c% p! T( C第二步:打配置文件尾部加上
6 p/ @, ~" }) O; d/ xRewriteEngine on
2 m; g; O" ]) m( c zRewriteMap lowercase int:tolower( T: {/ M; K$ l1 e! }& S
#定义映像文件
& e- D3 l& x# [( f. ?0 {RewriteMap vhost txt:/apache/vhost/vhost.map: o5 k/ {' N% J ~0 R) F/ p4 [- F
#处理变名
, X0 D% P5 ~* I5 T* C4 I7 rRewriteCond %{REQUEST_URI} !^/icons/
' s* D0 W* b5 E6 T5 F5 R. ^RewriteCond %{REQUEST_URI} !^/cgi-bin/( B1 C" `5 Y# I9 N( z' N- s
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$% A$ p3 F4 q5 { f
这里做基于文件的重新映射
+ l0 G ~ x2 c; [% n7 ]RewriteCond ${vhost:%1} ^(/.*)$: ?5 b. g! d, z
RewriteRule ^/(.*)$ %1/$1/ l. P# X" q: ?! P0 m- B
RewriteCond %{REQUEST_URI} ^/cgi-bin/
8 ]' Y/ p: Q- n/ k: \/ \5 @6 mRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
: g( l8 S1 \! l: P$ B& d8 VRewriteCond ${vhost:%1} ^(/.*)$: A! m( b% p: C5 Q+ Y% I5 ~/ u/ |
RewriteRule ^/(.*)$ %1/cgi-bin/$1
- r- q+ O; l! k1 W# z& M7 b: p/ E: {, Y' t5 g
注意:vhost.map文件是域名和空间映像的文件,格式如下:
8 H1 A4 N s7 d# Awww.abc.com /vhostusr/www.abc.com
* ^3 \# D1 |0 `7 w: e2 [www.xyz.com /vhostuser/www.xyz.com
; ]5 R# \: T* R; Z. o! j$ C% y5 Iwww.cccbbbb.net /vhostuser/www.ccbbbb.net' v: t0 ]0 l, I E. V7 c
.) x' P- ^/ g. {( F! F1 D1 s+ j1 j
.
# b- K0 B) z+ X3 \ ^$ x* N.; _1 n5 H9 Y5 [5 M7 u/ G5 q. d
.
6 v5 ]5 U- P7 S! Z# `(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)3 Z' V" ^( R. e, W! @$ U# o- ^
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~1 I0 X4 z# \* |6 h
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
+ v1 E* y5 ]( }注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
. C' O& B; r# T==============================================& R, K" Y3 A. K9 A$ {8 z. p3 u; F4 A
方法二、
( h( q' e5 K0 j- u) C: J
0 L' k, R# A0 w0 E6 ^: L. F. X7 F9 c, ^
rewriteengine on
x# X0 @; r5 ]* K& rrewritecond %{HTTP_HOST} [^.]+\.域名\.com$4 [# Z. U* R. `
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
8 Z1 A) |5 n/ w8 rrewriterule ([^.]+)\.域名\.com(.*) /$1$2; A6 g; ^" q0 n }' N n
其他配置文件, _& `( l8 V2 C( U9 Z
% T5 k- J% ~! U- v# k0 a& I
接着在DNS中开设一个泛解析到对应的IP地址。
3 ~2 g3 K! k2 a就可以实现下面的方案。
6 B/ M2 X/ p' `2 ]8 Q/ h& L$ n2 W0 I6 W( C0 E6 k' [4 r1 q; p2 |# Q' X
域名:domain.com" E- h9 f9 ]) {' w
绝对路径:/home/domain.com/) f# A7 O j2 B( E+ v0 X2 J
www.domain.com 自动解析到 /home/domain.com/www/
5 n, \, F+ m' Z6 Oabc.domain.com 自动解析到 /home/domain.com/abc/. n; _2 M% _4 ?: U3 ~" w7 ]+ ^
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹, M1 Q! `7 {; |8 c. E: b
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|