返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
& k. v7 \( h/ O4 _, T- G/ L( N- q: \8 u% [
RewriteEngine on
  [7 q, ?1 ?  |. z" D. xRewriteMap lowercase int:tolower; R8 J% u( V8 Y- _/ i0 s& J% C6 _* O# S
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map0 W7 H5 _$ n$ e! m+ T3 {7 X
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
. c+ b- N: T2 r! l0 m2 Z( oRewriteCond ${vhost:%1} ^(/.*)$$ V9 ]! ~, l0 r
RewriteRule ^/(.*)$ %1/$1
, s' h. w  L  k* Q  |) D3 f- t5 W9 {. `7 j8 p9 t; ?
' Q) E/ M+ @% u, x
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
- e2 j% O; i4 N0 O( ?4 k1 g然后,在这个所在路径的目录下创建一个文件: vhost.map+ i+ w  f. y0 `$ H1 S  M' p
内容为:# X, x4 ^6 K: \, }/ ]& n
3 K0 ^8 {4 _' t* q% j1 G7 e4 c- _1 C
www.domain.com /usr/local/www/data-dist/domain
# s: r  v* E3 k( d# h  f( f3 Z/ Fbbs.domain.com /usr/local/www/data-dist/bbs
5 F8 U* R8 ?& C& Y/ ]) [anyname.domain.com /usr/local/www/data-dist/anyname
7 }7 n: q2 a% v6 x- H2 @
9 t! R+ W' E* j以上部分都是:” 域名+空格+绝对路径” 的形式。% ~/ ^  B. Q) J
0 B8 s( x+ k- _
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
# m' @! F% z3 u3 I  Cdomain , bbs , anyname 等等,理论上可以无限。
& {, f& r. T+ [7 Y' x8 z- P2 }
  S9 C) `6 O: c3 u* u; M0 A+ K3 @这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以% G9 n1 i, _0 n) u1 r, N5 ^3 ^) G- A* \
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。7 z8 o3 G7 m3 S5 m
9 I; Q( T2 S- e: X. e6 j) @
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
! [+ P0 a# I' O1 c8 x第二步:打配置文件尾部加上$ \: N8 t( z" c% ^
RewriteEngine on
6 R' S4 g7 V' `4 g( z8 N, CRewriteMap lowercase int:tolower6 x" s5 g6 ]7 s8 W2 K: i7 S
#定义映像文件; Y5 Y" X; d6 p3 }* k0 r+ C& Z
RewriteMap vhost txt:/apache/vhost/vhost.map
$ b$ A+ ?% C8 F- P  p: P#处理变名
$ I" a, u9 W( L5 z' dRewriteCond %{REQUEST_URI} !^/icons/
( r( d4 x- E8 _! T) PRewriteCond %{REQUEST_URI} !^/cgi-bin/2 P2 W. t/ T0 R1 O! e
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
, }3 b4 Y  u8 n' y3 ^这里做基于文件的重新映射
! m. r; R6 n" e. L$ ?RewriteCond ${vhost:%1} ^(/.*)$
+ F/ B/ t0 m1 t0 _/ F9 }* mRewriteRule ^/(.*)$ %1/$1. ^7 d! ]+ A" s7 ]: V& t! D
RewriteCond %{REQUEST_URI} ^/cgi-bin/9 T' g0 q# V1 S% W9 G
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$/ w& m9 y/ J0 I* n, N6 ^6 ]
RewriteCond ${vhost:%1} ^(/.*)$
/ q4 b2 B! r0 @+ r) v0 {RewriteRule ^/(.*)$ %1/cgi-bin/$1% U4 m4 x# L. X% J" n/ z

0 J3 x+ a& w5 z# H- |9 Z注意:vhost.map文件是域名和空间映像的文件,格式如下: 
: i9 C: R: I" }. \1 }. wwww.abc.com /vhostusr/www.abc.com0 Z  w& E* V- t' k- [
www.xyz.com /vhostuser/www.xyz.com4 Y5 h: u3 g' j  I2 k6 U
www.cccbbbb.net /vhostuser/www.ccbbbb.net
1 Q' U' t+ O$ R.
3 \# [  j% w2 M.
: S1 l" y+ G7 ?8 b, x( B8 v  n) I.
. D3 L. V, w1 ?! [3 D, Y.
) p6 z! T* i+ M5 Y! H7 N(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟). `/ M8 ^& w) V# ^
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
% ]" L. k! U$ m/ Y' h+ z其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
& E' w3 \6 V% f+ g+ b注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~% C# k1 ^. X7 H
==============================================6 D2 l$ w! r3 H
方法二、
0 J; ?# D$ h* d! B. S4 q
7 L- |9 j4 E" @1 m9 o& b
' @0 G! p$ _! ]! p: |/ B6 V) r8 Arewriteengine on
: R# M# `  `' L; p" U) ~rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
" g% T" m- ~0 y) q/ w% drewriterule ^(.+) %{HTTP_HOST}$1 [C]
; c  N: Y$ J) y6 Zrewriterule ([^.]+)\.域名\.com(.*) /$1$2! G5 o: m1 s& Z6 X3 [$ ]) A
其他配置文件6 U" F' G% r7 l  H

/ ]& r( B3 w) a" g* m' p- z接着在DNS中开设一个泛解析到对应的IP地址。
  ]/ a6 `; f' T: O: Q/ `就可以实现下面的方案。3 x5 P# J% ]# c5 g2 H

1 U. U4 f) E$ k' q  k域名:domain.com
# h) M; J( G# \  c绝对路径:/home/domain.com/8 a! j  I  O/ ^! b. I1 I
www.domain.com 自动解析到 /home/domain.com/www// c# s" v. o7 w; h
abc.domain.com 自动解析到 /home/domain.com/abc/
& R; X3 h* y4 _8 M! l( @: L, Y( o7 o等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
$ L* `/ y: ^! r  R  @直接建立子域名名称的文件夹即可使用。不需重启apache。

返回列表
【捌玖网络】已经运行: