返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
( p& n6 I9 E. _! Q4 O
* _* z2 F0 u" N* {- @) W* XRewriteEngine on3 v7 h  l: J) }) |
RewriteMap lowercase int:tolower# a1 Q$ t5 W1 n7 B( B
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map# L4 o$ ~! f( ]- S( z+ @. r
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
4 @% {& E4 h4 O0 \8 F6 pRewriteCond ${vhost:%1} ^(/.*)$, k% |' ]" d* J" ~
RewriteRule ^/(.*)$ %1/$1
# c! f$ i+ R& A- n* A, M! l, r5 ~% [: y: |# x7 k+ z7 Z
( x+ w" Z! u- _/ e
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。- _, J7 O7 v/ v% c2 H* q- A
然后,在这个所在路径的目录下创建一个文件: vhost.map
6 H! n6 f8 W# J& e8 p2 j内容为:8 c) R! A, X2 g9 {: c: r8 B! _

$ f' A! n: H- h5 [# M3 i% bwww.domain.com /usr/local/www/data-dist/domain3 |, S1 X3 A2 C' Y# j2 t
bbs.domain.com /usr/local/www/data-dist/bbs
- g) k9 K+ u# Lanyname.domain.com /usr/local/www/data-dist/anyname$ C6 ^8 L* N; Z4 i

9 k& L0 b2 Y1 |! x& c以上部分都是:” 域名+空格+绝对路径” 的形式。
7 a. A$ n9 h6 Z0 h7 I4 B8 r" N8 d2 D
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
% Z: P! `! j" \' L# K) [domain , bbs , anyname 等等,理论上可以无限。
3 x) p5 g# o/ D
: t. O4 t- _, o. ^这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
/ R# o* b0 t/ g随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。6 x% f/ f+ w) e* M4 x
: b- M# h# L) h$ V, u# m0 w
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
' Q% z5 ]5 O% I+ O第二步:打配置文件尾部加上- \; Z' Q1 W' t
RewriteEngine on
# M4 b) d+ B/ k2 b; R7 {* iRewriteMap lowercase int:tolower! O' j+ \3 F  N7 [( N
#定义映像文件( D1 L% V6 b$ h' T0 [0 i8 L+ Y( O
RewriteMap vhost txt:/apache/vhost/vhost.map; k: w  x; X5 C) G+ Y# X0 \/ P- b
#处理变名! H0 l( Q: }2 x+ H
RewriteCond %{REQUEST_URI} !^/icons/  V+ G7 A$ N9 O6 s" B
RewriteCond %{REQUEST_URI} !^/cgi-bin/
. ~0 Z" V2 Y; t. E. e. ?  V  nRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$0 l" ?: n% |( Z& k4 E3 ]4 I
这里做基于文件的重新映射4 I6 G5 s; t5 s" C/ `6 H, y/ c
RewriteCond ${vhost:%1} ^(/.*)$: N; v- C* L" i4 [8 q3 h
RewriteRule ^/(.*)$ %1/$1  k) D; Y# i" E; Y
RewriteCond %{REQUEST_URI} ^/cgi-bin/
1 j$ c! Q0 S3 _* G4 RRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
. K+ O8 _! o( Y. I, j$ ]RewriteCond ${vhost:%1} ^(/.*)$
; v$ J" ?1 d5 n! \RewriteRule ^/(.*)$ %1/cgi-bin/$1
: @. W: v1 `" ^, A, R$ u9 b5 Z1 P9 U, S' m2 x5 ?1 S& p
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
, ]4 m5 Y% `: s  |/ B; [. ^4 t4 o6 }3 dwww.abc.com /vhostusr/www.abc.com
: M5 {. k8 W$ Rwww.xyz.com /vhostuser/www.xyz.com5 p* P2 J, j: A! j* ]1 I1 u$ G
www.cccbbbb.net /vhostuser/www.ccbbbb.net
8 R* w1 m+ L& M. p/ _.
: r. f) v. }$ U2 b0 M% j" m.& k+ D- c' W6 V0 x
.5 p; W! Y% I1 z/ h# `, B5 }2 Q
.
; g  G+ Z; ?8 \- [) w(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)4 w; p1 H' p$ g- m/ @
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
( Q8 {& v8 V( y1 T* U& S其实这个可以用php脚本来完成的,很简单的~~呵呵~~~9 Z) U$ R5 ?2 B
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
  B2 _1 }+ l$ W5 E! I==============================================
2 M# |/ D( o5 Z. V9 o: M方法二、5 q# l( u7 S+ q

! w& e+ Y7 M6 X9 H; G% z- w" Q: a& G$ {1 h2 I, s
rewriteengine on
+ [& P7 g2 L' prewritecond %{HTTP_HOST} [^.]+\.域名\.com$" |1 q/ D7 [/ R, H6 n, l, q" z5 C0 ^
rewriterule ^(.+) %{HTTP_HOST}$1 [C]- t, ~3 U0 L% a: B! L
rewriterule ([^.]+)\.域名\.com(.*) /$1$2( C; S+ L8 E4 |8 f4 `3 `  Z
其他配置文件3 o  U/ m. M8 I5 l* J
6 v2 D/ q. e4 y# b4 e3 R- N! b7 t
接着在DNS中开设一个泛解析到对应的IP地址。9 t" t, c; h+ d7 }! U! R
就可以实现下面的方案。
: B3 c8 q' I. i& J' R! Z, n4 A$ k) q2 [
域名:domain.com
: D$ G1 C; e6 w7 b/ ?7 R- k0 Q+ ]绝对路径:/home/domain.com/4 w) s. z1 q: p2 I$ X" n
www.domain.com 自动解析到 /home/domain.com/www/; o8 a6 G, }1 W! D- m' D+ Z; |$ W
abc.domain.com 自动解析到 /home/domain.com/abc/; F4 E0 G5 O9 f+ N& i
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹1 Q' M" D1 L: F8 d. K/ u
直接建立子域名名称的文件夹即可使用。不需重启apache。

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