|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14443
- 金币
- 2507
- 威望
- 1647
- 贡献
- 1455
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:: t$ U: ?# I0 ?" Q% [" u
& @! m5 `* m. {; s& X% z# {RewriteEngine on
9 f/ ?. }) ^% @: H: D/ c9 mRewriteMap lowercase int:tolower# M) s9 a5 I1 Z7 k1 c1 M% b
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map* k3 o. o/ I2 ^1 z8 T6 Y
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$* c- g* U! ]/ r
RewriteCond ${vhost:%1} ^(/.*)$; q' V. w$ t' V! R
RewriteRule ^/(.*)$ %1/$1
) W1 b4 L$ O1 G/ A" ^
) P% K7 j3 \- G1 u7 N! P8 [, T6 \
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。8 g6 W8 Z$ V" S% B- ^) i$ Z
然后,在这个所在路径的目录下创建一个文件: vhost.map
@4 h0 @+ y/ `& c内容为:1 @# ^- C' M# a8 }) X$ t3 x4 L- d
4 `) ^# q4 ? fwww.domain.com /usr/local/www/data-dist/domain' _$ i4 H7 _" \( A3 c6 {% |
bbs.domain.com /usr/local/www/data-dist/bbs4 R. Y9 e) s( S- f8 o
anyname.domain.com /usr/local/www/data-dist/anyname
8 c7 F6 m9 U Y9 d/ q+ J9 l* U; G( ~2 T. E$ z. a' v
以上部分都是:” 域名+空格+绝对路径” 的形式。- p/ D/ T4 G9 R
d) F. d+ \" g0 x8 R/ A, _
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
3 g/ }# B! m- F; qdomain , bbs , anyname 等等,理论上可以无限。; } \! u$ c5 N+ a: v) x$ ]
( D9 o7 h5 `- M! @这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以) v1 P: [$ I4 }3 {$ f
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。. _; e* [5 D# \6 R# V+ ?- s( W
# f6 ^' [* ^9 ]9 u% I/ f
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。8 C8 _$ T1 o1 N& r9 H8 j
第二步:打配置文件尾部加上+ k6 f$ o: s( O& Z
RewriteEngine on, A2 J! l. Q/ e
RewriteMap lowercase int:tolower
! H6 k, g/ U0 c#定义映像文件
9 ~) X% { \( U3 s$ d8 M' y3 fRewriteMap vhost txt:/apache/vhost/vhost.map) X: u$ M$ C% W& a' v5 f
#处理变名
8 x# v7 {) k2 d2 \5 N5 E4 fRewriteCond %{REQUEST_URI} !^/icons/' S t! Y5 T; `" Q8 L) k: A' _! G* ?
RewriteCond %{REQUEST_URI} !^/cgi-bin/
$ ]9 V4 \2 D3 v7 h0 QRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
% H" W, B' E0 f' H这里做基于文件的重新映射
}' g4 \ o: |1 q& |8 L8 E" ^RewriteCond ${vhost:%1} ^(/.*)$& ]) t9 d* C3 P9 c. I$ Y
RewriteRule ^/(.*)$ %1/$1
* i4 Q3 I* h: Y( `% W9 P1 NRewriteCond %{REQUEST_URI} ^/cgi-bin/
! O2 p- S$ D, _+ d b7 mRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
2 C5 I5 A- Y. {3 y. { [0 d HRewriteCond ${vhost:%1} ^(/.*)$( J) j3 k+ M4 y$ A
RewriteRule ^/(.*)$ %1/cgi-bin/$13 x* J: i0 t; H* M+ X3 f) R
+ T' m+ l4 \ m
注意:vhost.map文件是域名和空间映像的文件,格式如下:
7 x n6 S2 W9 Q. ^www.abc.com /vhostusr/www.abc.com
+ K" b+ f+ r0 Pwww.xyz.com /vhostuser/www.xyz.com$ C1 G5 i$ H% P
www.cccbbbb.net /vhostuser/www.ccbbbb.net! K, o8 n4 m9 F" \. n) O. Q
.
, b$ L' G, ?+ ]6 @+ Q1 R0 P.9 b, T3 O# d3 v4 ^$ |$ e, b9 x
.8 V2 Y2 G; C! j( ?
.1 l7 u$ C# _3 C2 i: K! @$ [0 z
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
% V( j" u3 e2 I+ }$ z第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~8 h3 ?- Q! V8 Y6 n5 P% I4 Z
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~/ H5 F7 N3 v7 G/ F* ^
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~5 r1 `; p$ x a! X% [" W+ F3 M
==============================================
) ]3 s1 _! k4 [5 f: a3 R方法二、
( s9 S- \7 P. U6 v E4 _7 W
x" P3 _/ x* ~$ K F% Q n3 {9 S0 y$ i7 N* B- U8 ~
rewriteengine on( Q, q; h6 p% C O% ]) j
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
( }+ |3 a; m" x0 l6 Hrewriterule ^(.+) %{HTTP_HOST}$1 [C]
* S8 Z, k* b% _" T! H. K" J$ Frewriterule ([^.]+)\.域名\.com(.*) /$1$2
s4 x: P, E! U3 E0 R5 a其他配置文件: S5 F) d4 U2 Z# u( l
4 I0 O J7 R$ o" w
接着在DNS中开设一个泛解析到对应的IP地址。/ k& @" c" Q R- y. M
就可以实现下面的方案。
; c9 N: w$ u9 @' X, N' I/ ~1 V! f( v# j$ ]) S4 ^4 Q3 f
域名:domain.com
: y! h+ p+ p6 h& ?4 X绝对路径:/home/domain.com/. u% Q% b" {1 z9 V7 t4 i% H
www.domain.com 自动解析到 /home/domain.com/www/
; p: s* F0 b8 ]4 V) wabc.domain.com 自动解析到 /home/domain.com/abc/( w$ a( u6 y5 q' I5 j
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
( e$ T0 Z! o, A* k7 v直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|