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

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
5 h8 s8 J, V# Z7 C6 t1 w: k+ v/ B9 a4 j3 G1 H
RewriteEngine on" c, E6 o4 O& X* T7 c8 B
RewriteMap lowercase int:tolower9 F( Y3 q: _  W$ ]$ K
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
% `) Y7 K' h7 i  r/ T% jRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$; g$ h3 m4 \% g- }% m$ k1 b& W
RewriteCond ${vhost:%1} ^(/.*)$
7 h( @& f4 r6 k1 v" E& GRewriteRule ^/(.*)$ %1/$1/ H  x2 M' U  `( i4 ]) y
3 s5 {! s" x5 x

9 Y% ]9 j5 W6 l' C6 a6 V其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
/ k' h) e5 ], g* W5 o5 I" i然后,在这个所在路径的目录下创建一个文件: vhost.map
: r3 ]+ Z- S  Q内容为:
1 o1 P" s( j1 f) _6 z+ v6 o3 {9 x6 L0 y4 u
www.domain.com /usr/local/www/data-dist/domain
2 b5 O, x1 \& ^9 obbs.domain.com /usr/local/www/data-dist/bbs9 q6 ~0 D% F) a7 D% l& s
anyname.domain.com /usr/local/www/data-dist/anyname! Y/ I3 u" P: C

  B0 q' P4 K5 m以上部分都是:” 域名+空格+绝对路径” 的形式。2 c8 ?5 G6 w" w) W0 F+ N
& f* {% i2 u0 @4 ~, V0 D. x
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:& b/ W) `& q( q/ @
domain , bbs , anyname 等等,理论上可以无限。
: C$ e# U" o1 ^& z) b$ Q" w* e8 `' _& n- o+ x' [6 J9 h( p1 }
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以2 A4 O  U! W+ U% K! u; l
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
3 K8 F4 H* G& _% S/ k/ t
. [4 S, T8 h" X3 f2 ]; H第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。9 o% H; h8 w; j; h
第二步:打配置文件尾部加上+ t6 p6 @9 j/ E% e7 M' A
RewriteEngine on
- j& X- {+ G; vRewriteMap lowercase int:tolower9 v7 d$ f" J  u- l
#定义映像文件
3 R6 i. V& b( J& q$ w. oRewriteMap vhost txt:/apache/vhost/vhost.map
4 D( S. v$ v" k' W6 |#处理变名
- `! P2 h/ [8 l, `/ a. ~" KRewriteCond %{REQUEST_URI} !^/icons/, \" Y5 q# d0 p, B9 y: b+ x; F
RewriteCond %{REQUEST_URI} !^/cgi-bin/
. @( U' a% N9 ^, s# Q( c3 j6 VRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
3 Q+ d2 M$ v+ H6 Z7 d& {) q这里做基于文件的重新映射
- t8 [0 |8 e, v: ~& Q4 u- yRewriteCond ${vhost:%1} ^(/.*)$# W9 _  d) s. q# u3 K! b
RewriteRule ^/(.*)$ %1/$1
3 c3 X! h5 f' w; ]7 g9 G6 }: H1 aRewriteCond %{REQUEST_URI} ^/cgi-bin/
: {8 m" F. {/ |! |RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
* H, f6 s2 J% [) y4 r9 }RewriteCond ${vhost:%1} ^(/.*)$2 \+ Y  K  x: |. K$ p7 \
RewriteRule ^/(.*)$ %1/cgi-bin/$15 e! C. E" F- ~( u! J: _
, Y( a; B& Y( M* i  r
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
; c% q/ F' w8 Zwww.abc.com /vhostusr/www.abc.com
6 M* k1 A6 t" k) |www.xyz.com /vhostuser/www.xyz.com- h2 W: T6 A& L7 ]2 o* j
www.cccbbbb.net /vhostuser/www.ccbbbb.net
/ E+ h( ?! k+ [* x5 @  F) B.
: `$ s) l: ^0 Z; S2 S# o6 H.! @  Z% x$ [  H
.7 e7 {" p2 m; c% \0 @0 j- |& X( D
.* S* J5 q6 G5 M" a* u
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟). {2 S% k) ^: T# s! S* Q
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~& p* H" {$ C0 x' @- ~3 y
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~% A2 N  n6 s" F0 [
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~- X' T& [8 [; ~
==============================================
. P8 W" f# \) G方法二、
( O% i( U& ]# }- ?5 X6 A( X$ o
  [$ F2 u$ |) a, R
. S9 P4 t! V+ V: d+ erewriteengine on
1 c- z, Y9 I- P, z' Xrewritecond %{HTTP_HOST} [^.]+\.域名\.com$
  u. V! n3 P* Rrewriterule ^(.+) %{HTTP_HOST}$1 [C]" ^  Y3 O4 }2 o
rewriterule ([^.]+)\.域名\.com(.*) /$1$22 U( C' E1 f( }8 F" s
其他配置文件' P& K" N; Y% \; @; J# ^

& E) e+ g! ]/ @( Y: o0 y接着在DNS中开设一个泛解析到对应的IP地址。
; V( d. l3 D8 W" e6 [# {( {9 x2 N4 F就可以实现下面的方案。& J6 L) G5 A( U- \+ x

. `5 w+ j$ Y# R  @8 A% y5 ^域名:domain.com4 g1 t4 \# L4 v- {
绝对路径:/home/domain.com/# C" Y# f" X+ b* k) X; d
www.domain.com 自动解析到 /home/domain.com/www/# F( G0 O% d; g' l( P
abc.domain.com 自动解析到 /home/domain.com/abc/
/ @# k: d+ M) C& w5 I等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹) J: o5 C$ Q* ?4 a8 h) r5 o+ w
直接建立子域名名称的文件夹即可使用。不需重启apache。

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