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

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
% ]# \  ?. v& U- V4 x9 N  m' N; Y- L9 {1 |. V3 s+ \
RewriteEngine on& K6 [0 t* K2 H7 i$ O
RewriteMap lowercase int:tolower# R  U1 e4 A6 W$ f, ^
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
, x6 L1 E* _+ I1 r7 A0 r" t& MRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
  r" A( c7 W3 V- L. ZRewriteCond ${vhost:%1} ^(/.*)$: e% x7 F8 s' }; f+ M% x
RewriteRule ^/(.*)$ %1/$1' v( y3 X" x' M5 s9 N# _
  p4 |  F! e8 ?9 P5 B, i
6 q! x+ [1 W( ~* |) g  z% q
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
% L1 _* Q( g8 i% @6 N- z然后,在这个所在路径的目录下创建一个文件: vhost.map
3 f5 o( |9 W* v8 `! w% o内容为:" U: Q1 Q0 H: p1 ]6 C

9 E  N2 z- S, J- |# swww.domain.com /usr/local/www/data-dist/domain( A7 g( H4 I' C8 [$ ?4 x/ v
bbs.domain.com /usr/local/www/data-dist/bbs/ U1 h# s$ G/ s! u  `# s6 B
anyname.domain.com /usr/local/www/data-dist/anyname
9 }: L2 h' h- p- `( A3 ~! h
: y1 p5 X! L9 Z0 H: R6 U- J2 n: {以上部分都是:” 域名+空格+绝对路径” 的形式。  j9 Q0 Z- i* i- y* F% O5 T0 T

4 J  x. |" d, E5 u9 Z* B8 m最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:8 j/ Q+ O* T. S3 X1 W, _( K9 R
domain , bbs , anyname 等等,理论上可以无限。
- t  a  V3 B) ~2 w: F$ M0 i. L
" h. L& J( H! _2 i$ u! j这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以7 C9 I6 q3 I& l1 ]. {; W
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
7 w) U$ n1 b3 |6 q9 }: Q3 r) I) g, x% g1 {1 n; ~" `
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。' w" _- x- x) m' T. c7 P- T6 Y6 L
第二步:打配置文件尾部加上
& c1 D& n, i' S" I- c- VRewriteEngine on2 {; e) _6 Z0 h3 k7 m
RewriteMap lowercase int:tolower2 P; h! Z; b. P1 A0 G  I7 _
#定义映像文件
- h( G9 X- s! Z, u2 kRewriteMap vhost txt:/apache/vhost/vhost.map1 t# E/ P. Q$ C5 S' r" {
#处理变名
/ B. b) `) k: k9 `& t" g- jRewriteCond %{REQUEST_URI} !^/icons/- G+ o2 b  g! C
RewriteCond %{REQUEST_URI} !^/cgi-bin/' C7 N0 V4 c, L9 B4 ]- Z
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$" [! m6 R( E9 a2 j6 z
这里做基于文件的重新映射: g) o, f" M2 C' k
RewriteCond ${vhost:%1} ^(/.*)$0 d0 b7 v1 b: u- V, D# l' A% V& ^
RewriteRule ^/(.*)$ %1/$16 B( e9 P; x3 e6 d9 K* J1 Q
RewriteCond %{REQUEST_URI} ^/cgi-bin/4 ~9 ?8 u  s' |1 j4 B
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$7 Q) Y, k+ R# H6 t2 n& E
RewriteCond ${vhost:%1} ^(/.*)$7 H, |& N6 x9 r! _9 E1 r; o4 i0 q
RewriteRule ^/(.*)$ %1/cgi-bin/$1
3 Q/ F8 Y- `6 F, p" ?, U  y$ Q; T: S, Z& d# ]8 Y7 Q
注意:vhost.map文件是域名和空间映像的文件,格式如下: + Z# Q  z0 Z) s! g3 B9 a
www.abc.com /vhostusr/www.abc.com
0 d8 v7 D+ g: I  T) @www.xyz.com /vhostuser/www.xyz.com) r  P  L0 o/ F& }5 X% U
www.cccbbbb.net /vhostuser/www.ccbbbb.net
% H% @# C6 e6 ^% N.% I7 f: I1 ?+ |& K" I8 w5 o
.
# }% q: g# j$ x- \8 q0 {.: V; U/ f: p, t
.  V+ v) v! i$ i4 Q# U5 v6 _$ a
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)% e' w4 F8 j9 k' F3 Z
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~/ V/ l/ t2 `& W# Y( u
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
% }0 c7 `) R  @. a: }1 \. w6 @1 j& `注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~: M8 G. T+ G# j
==============================================$ G5 M- X$ V. A
方法二、( M; c  i. w, s! A

2 d% I3 _1 U: m  t6 `8 O6 V! F* T8 l4 ?* ~$ E6 _: b
rewriteengine on6 A) e9 J( o9 _+ Y* U
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
$ ~6 w1 X/ [$ [; r4 _  ~) Prewriterule ^(.+) %{HTTP_HOST}$1 [C]1 L. Z- p4 }3 W7 d
rewriterule ([^.]+)\.域名\.com(.*) /$1$2& e( F7 w/ l( {" g" B
其他配置文件  P; ~$ C- N5 p

% `1 X% i. y/ ^' O2 [1 Q接着在DNS中开设一个泛解析到对应的IP地址。
0 r+ o2 L1 j4 t就可以实现下面的方案。
$ g* c- o" j% C; q
, F  a. T8 B" X; D/ z域名:domain.com& u/ c5 z: B6 t. j; Y
绝对路径:/home/domain.com/
, c2 o# [- f0 }+ Mwww.domain.com 自动解析到 /home/domain.com/www/
& Z- d! a% Q, v9 mabc.domain.com 自动解析到 /home/domain.com/abc/7 M: ~) j$ T8 y: d, s. B
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹4 D. q8 Y4 i+ g& s
直接建立子域名名称的文件夹即可使用。不需重启apache。

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