|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14321
- 金币
- 2446
- 威望
- 1647
- 贡献
- 1394
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:) _7 j8 H% _1 Y, }) D/ G9 k
6 h/ c# k5 y, _# C9 Z
RewriteEngine on5 F# }- O9 H9 a8 n1 m I
RewriteMap lowercase int:tolower% N9 L p8 t) ^
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map$ [+ z6 r7 U7 s6 m7 f" ?
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
0 c: w& l- A% |6 }RewriteCond ${vhost:%1} ^(/.*)$
$ U( @3 m) d0 w, m6 WRewriteRule ^/(.*)$ %1/$1# U j+ g! P$ b& Q
& Y. c9 g: H- f$ b8 g( `( Q4 ?0 Y
. v5 E z7 m4 _其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
( [; h6 l) ?- W3 t) V然后,在这个所在路径的目录下创建一个文件: vhost.map8 N- ^8 U! [9 j( z
内容为:
! g0 G3 i/ Q4 _- \& m% {* n% R, y7 P( `+ N+ A; R/ J- R
www.domain.com /usr/local/www/data-dist/domain
$ q# ?1 L8 S+ f4 R! ]; cbbs.domain.com /usr/local/www/data-dist/bbs0 w4 p+ D' D- c( k+ P
anyname.domain.com /usr/local/www/data-dist/anyname
E- q2 `, L) O* N' q) c+ r0 J. o2 o# y& X0 V8 k# S1 O: K5 m- y% G
以上部分都是:” 域名+空格+绝对路径” 的形式。5 h7 H' k- \: \" R
7 ?2 V: ?* d6 |+ h最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
9 u! V/ {5 i0 z, D* n& vdomain , bbs , anyname 等等,理论上可以无限。
) W" |, U; u2 K. Q1 [6 [2 W4 x# E# c- ^1 m- f
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
8 J; s+ J6 `3 ]6 v! H随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
8 f+ H; L2 r3 L- k# ?: p! h. o3 x: c) o3 c$ p* ~/ p
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。& _* N% y6 F4 j6 A7 W" Y
第二步:打配置文件尾部加上
& s$ @$ K' p* O; l" J# _RewriteEngine on
# G& u5 ]" u" VRewriteMap lowercase int:tolower
: o; \ i8 B$ }, w- c' `& _9 d#定义映像文件 g( B7 w$ K. g
RewriteMap vhost txt:/apache/vhost/vhost.map
4 h& f- W5 d+ w3 a#处理变名
4 ^9 J" B$ Y c$ O0 CRewriteCond %{REQUEST_URI} !^/icons/
1 x+ }3 @) D9 f7 q. ?' [RewriteCond %{REQUEST_URI} !^/cgi-bin/
`+ g. G+ G0 ~. k! c \( ORewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$8 K7 O2 y! L( m
这里做基于文件的重新映射
% D3 ~& L, _/ K4 z CRewriteCond ${vhost:%1} ^(/.*)$) h: |( h& }" b5 z% x4 U
RewriteRule ^/(.*)$ %1/$1
3 x: C" h- Q5 iRewriteCond %{REQUEST_URI} ^/cgi-bin/
8 ?4 y& V4 |8 B7 s/ cRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
3 G- n7 X% j5 o# kRewriteCond ${vhost:%1} ^(/.*)$
2 V& d- z! n* O8 }; [' _RewriteRule ^/(.*)$ %1/cgi-bin/$1- ?( R! _6 S% k
! n7 ]; F$ H' X3 ^. k注意:vhost.map文件是域名和空间映像的文件,格式如下: ; S, W7 G" W8 {
www.abc.com /vhostusr/www.abc.com
, ?7 ~9 T; s9 J" b: l, k- Ywww.xyz.com /vhostuser/www.xyz.com
+ l+ ?8 o7 y4 O3 K; D2 ^- S- ~www.cccbbbb.net /vhostuser/www.ccbbbb.net
1 J* i4 t7 k9 q" ?% o7 O1 t.4 T- ~* C! D: [
.
) A2 h3 D' X0 b1 I.' J$ o" j6 C5 F }+ q+ g1 B" ~
.
- u5 X% ?8 `1 R5 ~8 `# v7 z( b(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)2 a4 o5 H' A+ c1 q, U' F
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
+ I( u% ]% G- T) ~其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
3 K# O6 v0 M( C5 M注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~9 A+ @- |+ m. K( k6 E$ o
==============================================3 V, O* V u5 E; Q- A0 I' R; ?9 g+ f7 M* Q
方法二、
5 m) ]* X1 \2 P8 {
1 T8 ], w. O, ]# ` y. Z
! R+ m s! C1 B' I0 l1 g. y' U! xrewriteengine on- O3 F: }7 g* f
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$3 ?& G$ M$ |' ?5 P2 y$ \/ T1 B
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
& L$ q3 p. O$ p2 h: L( crewriterule ([^.]+)\.域名\.com(.*) /$1$2+ |5 @+ K/ z7 V. M6 d. y* D
其他配置文件! S; \. i9 k# P- v' ^' L% r
" A7 x% r& _" P! K接着在DNS中开设一个泛解析到对应的IP地址。
! A' `7 _' j5 J就可以实现下面的方案。
" k, _, [# Z( m1 L2 z+ b! [1 h, P1 D7 k3 c
域名:domain.com
/ K; o$ d" O" Y- u0 R绝对路径:/home/domain.com/
; e8 _( m2 |, K) ?( bwww.domain.com 自动解析到 /home/domain.com/www/% h" |" a, A7 G9 c% W2 E
abc.domain.com 自动解析到 /home/domain.com/abc/
6 o( g/ Z Q+ k" s) k+ R等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹( \! v( y ~5 `) \3 ?/ D& C
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|