获得本站免费赞助空间请点这里
返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:; n! j1 Q3 w) L8 P. }5 O

+ z1 Z3 L1 x0 }* C! VRewriteEngine on# v# R" j- @1 q2 V) r
RewriteMap lowercase int:tolower
  w! s1 }' D* U. P4 y3 Z- ERewriteMap vhost txt:/usr/local/etc/apache/vhost.map' i, H7 R$ A+ t  y1 ~
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$4 Q1 @, {# P3 y2 J  v. h1 ]
RewriteCond ${vhost:%1} ^(/.*)$0 g  I5 y# G) @* c8 [/ n
RewriteRule ^/(.*)$ %1/$1
/ e- K8 u; L& }% J5 A" s6 m1 H& O
  O9 f  C; ?# S' ?0 L
; P4 L+ \) D, R" _0 T其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
' Z) `1 u6 E. S& u: T0 s4 ?然后,在这个所在路径的目录下创建一个文件: vhost.map
! l  }: w  R' N5 I; y: R内容为:1 R- j0 q" O6 ^, T, q  [' o
0 e- G; k/ H& Q+ V
www.domain.com /usr/local/www/data-dist/domain  k1 Y2 y7 W- u% ~/ I
bbs.domain.com /usr/local/www/data-dist/bbs( _) b1 I( I0 N
anyname.domain.com /usr/local/www/data-dist/anyname
0 I; |5 g+ d' w/ J5 x3 E/ D" M7 E9 j5 S/ a
以上部分都是:” 域名+空格+绝对路径” 的形式。
* h6 k* l: M9 M- R# U
2 x3 R" ^  x& d4 U" }3 B# A" A- R. L最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
* k0 g3 P7 C; j7 i5 O+ Jdomain , bbs , anyname 等等,理论上可以无限。
% @  _. d" G6 o* E! j" S, S9 ?) ^) r$ B
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
/ @6 v3 e, k2 H7 ~7 m9 C! T随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
* f7 p9 N, r% I( e1 _
+ k7 D: J( J4 s8 Q5 j第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
7 A5 I8 c5 A" K' ~$ [第二步:打配置文件尾部加上
8 w' r7 ]  q  U% o) L" ?- kRewriteEngine on
! F1 k8 b, k4 ?0 v) I- x5 O9 TRewriteMap lowercase int:tolower
( p5 `0 Y% W9 s  q3 G* D#定义映像文件. e5 ^/ [' C0 t/ z
RewriteMap vhost txt:/apache/vhost/vhost.map
5 F* J: c$ A" B( \. j* V#处理变名
. m6 i0 o, [1 u5 ^RewriteCond %{REQUEST_URI} !^/icons/' c- M7 Z: B2 u% j4 r
RewriteCond %{REQUEST_URI} !^/cgi-bin/
$ K' U% O7 y9 Q: ~+ ^; fRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
$ Z6 w7 g% c8 I7 W2 d  u( D3 s% L这里做基于文件的重新映射
4 c( U0 e$ q  h7 E" c& P/ E8 C; TRewriteCond ${vhost:%1} ^(/.*)$% H0 B# {6 \- Z. @! ]" b
RewriteRule ^/(.*)$ %1/$1* Z* U$ {, x" N- h- O
RewriteCond %{REQUEST_URI} ^/cgi-bin/
' Q: N3 V6 m5 ARewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
! @" @" L! S2 m  o) i  sRewriteCond ${vhost:%1} ^(/.*)$9 I- X/ ~: R4 b8 N0 v- e* F0 _
RewriteRule ^/(.*)$ %1/cgi-bin/$1
4 n4 t# n2 [& h) |1 R( r$ n( {& O- U7 M$ v& p
注意:vhost.map文件是域名和空间映像的文件,格式如下: . S' K* _/ T7 t" Y% f
www.abc.com /vhostusr/www.abc.com
/ l4 N  L% }" {/ O2 awww.xyz.com /vhostuser/www.xyz.com
6 \# t/ I: S1 m- m; @www.cccbbbb.net /vhostuser/www.ccbbbb.net2 y/ s( P5 X7 Q! L! u$ J
.( J4 }% b2 K* F6 _5 w
.- B8 }' r3 z, D% y' a
.) t, C& ~, }  x+ C0 _5 v; Q
.+ O, `9 Y8 [, x0 C- |! R: @: h
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)1 @9 W" K+ F# k  Z/ {
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~1 s. O% o% r: [& {  _0 G+ a
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
& ~1 Y! K3 \2 B6 q% O注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
9 ]5 u( y, }+ T' X==============================================
4 M9 j, s( f8 s' n: X' g/ E% C方法二、
. ]  n) `: O9 [/ }8 S" U# b
0 b: [! w# ^8 E2 w1 X$ E9 k4 t$ Y% Q$ ?8 T/ L
rewriteengine on
$ S' v- r5 `; I; q7 E) Jrewritecond %{HTTP_HOST} [^.]+\.域名\.com$6 o/ d  o' J0 O, v/ T7 `* ]
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
4 q. [4 B* D# A  zrewriterule ([^.]+)\.域名\.com(.*) /$1$2: l7 {/ T% A7 h# p0 z, u- U6 E
其他配置文件
# z8 x1 h% ~; H9 A$ V( H$ s
* K; }. Z7 h: A/ B% O5 H接着在DNS中开设一个泛解析到对应的IP地址。
. ]: u% G) `, L  `& R就可以实现下面的方案。' h0 h7 Q7 s: @3 f+ ?

5 R. @& E) }9 v8 g域名:domain.com$ b: D# ~0 `. n% n
绝对路径:/home/domain.com/5 B+ }" h! S' Q4 ~& N
www.domain.com 自动解析到 /home/domain.com/www/; o; b1 r6 Y$ v( h
abc.domain.com 自动解析到 /home/domain.com/abc/+ v+ o! `* m  y+ f% G& ^- n
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹6 _. D9 h0 n# g1 I- [' O2 w
直接建立子域名名称的文件夹即可使用。不需重启apache。

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