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

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
8 u$ N# i' N, o* W3 Y! J8 i0 p, v2 V' b
RewriteEngine on* s  L/ F* u8 p" u
RewriteMap lowercase int:tolower
3 M( k: o) Z. G* QRewriteMap vhost txt:/usr/local/etc/apache/vhost.map5 L4 n# ?9 }! Y% H. v4 j( \
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$5 j3 Y+ @2 j7 j0 s) w  B2 f
RewriteCond ${vhost:%1} ^(/.*)$
8 D0 c" B  @# A! v- a* ERewriteRule ^/(.*)$ %1/$1) M, s; S# ]' @
# c+ n( J) r3 o! ]0 H7 z! m

+ x  Q* u# I3 x2 d2 g0 H: ?% i; m其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
3 z# g0 ]7 _4 x* S4 @$ C然后,在这个所在路径的目录下创建一个文件: vhost.map
: n+ T$ o$ `: T+ {* ?内容为:- R) l# r! W; u9 p1 \( G5 r. c

9 c- A5 s7 |; w6 owww.domain.com /usr/local/www/data-dist/domain0 M: k/ D0 o+ l9 c% c
bbs.domain.com /usr/local/www/data-dist/bbs& q3 s% u3 o) o, B% ^
anyname.domain.com /usr/local/www/data-dist/anyname3 G! r$ i+ b3 c9 L) A

: I; a6 }) R! C以上部分都是:” 域名+空格+绝对路径” 的形式。+ |  x, k: T/ @. t
5 n2 @, I$ C; e" m9 H8 g
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
8 l5 C4 @, P+ ?# d5 M, zdomain , bbs , anyname 等等,理论上可以无限。$ }3 C# L. A! Q% Q, G
. K3 N) _9 K0 o- T8 U8 s
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
: Y0 l! c- p5 U+ ^随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
& K6 s$ z, D* s1 i% I# h  H: g1 w) P% U# W2 F6 Z% s
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。+ }6 Q1 l. Z2 h* l
第二步:打配置文件尾部加上2 C1 t' Y) `7 M. s
RewriteEngine on
: N0 z. h5 b5 Z; q( O7 |RewriteMap lowercase int:tolower
+ x3 H4 t" E( i* ^5 L0 F; I' j#定义映像文件% `- T5 o; L: D- F- v. U
RewriteMap vhost txt:/apache/vhost/vhost.map
# @2 J+ \  M/ O#处理变名
1 h$ g8 M5 m# E6 I( D7 uRewriteCond %{REQUEST_URI} !^/icons/
$ R& t, \; Z0 ~$ i8 ^9 I$ GRewriteCond %{REQUEST_URI} !^/cgi-bin// r3 t) p( ~, H$ A1 Z3 \
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
) D, j' b8 I1 q! k7 _, k0 V2 H$ H这里做基于文件的重新映射; V) e% a/ H+ ~" @" {4 u! y7 v" h
RewriteCond ${vhost:%1} ^(/.*)$
1 Z) `/ t8 l/ X, GRewriteRule ^/(.*)$ %1/$1( ]; p& J( S% D# H- z
RewriteCond %{REQUEST_URI} ^/cgi-bin/
: z( Z/ B# o: V" x. @2 `6 \! N1 R+ I, tRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$5 ]9 D6 j8 A/ m2 J2 c# W% i# D/ I
RewriteCond ${vhost:%1} ^(/.*)$
9 U/ X) T  V. z7 n2 E% a* `' G8 r- TRewriteRule ^/(.*)$ %1/cgi-bin/$1
- F! v4 S7 H" s/ e1 a$ Y
( Q7 z/ h2 c1 _$ y  n6 r8 H注意:vhost.map文件是域名和空间映像的文件,格式如下: * T  c2 \( o- d. Q) F- u
www.abc.com /vhostusr/www.abc.com3 M1 J  B9 _. G0 f0 @9 P7 W2 z
www.xyz.com /vhostuser/www.xyz.com, e# F+ _. X3 R8 y& g$ e3 T
www.cccbbbb.net /vhostuser/www.ccbbbb.net9 h( ]- S( s+ `, x4 [0 B' B" h
.
$ p3 e9 K  q0 i7 n. L  X0 \.; b( J" z' W/ w! A% X4 j) z
.
6 o7 V7 B) s# [" R, F/ D7 `& e2 x.
! ^$ i: T# J$ x( Z  W9 m: f+ G(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)& X5 R0 h2 ]; e6 V" A3 I- L
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~4 x5 b' O8 c  I9 {8 i  N6 Q
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
6 Y' M$ i' o- \: v) p7 z: x注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
9 @  e2 F$ w. \' }; w7 a==============================================
7 s0 y7 d: O" I1 h方法二、
; O2 {7 @& Y% ~
: ^* f5 c7 Y9 v
9 e. {0 }2 h3 X$ ^% U  o* frewriteengine on
. H" e2 P7 q  e3 P) Y" i' Wrewritecond %{HTTP_HOST} [^.]+\.域名\.com$+ r2 ~; E: m  J2 E$ V
rewriterule ^(.+) %{HTTP_HOST}$1 [C]6 C7 a- V1 f: p/ U+ N2 l: P) `: Q
rewriterule ([^.]+)\.域名\.com(.*) /$1$2+ p/ n  H& v% @6 D' e
其他配置文件0 }; y0 Z0 s; w$ z7 ~4 L: _. c

& d1 x6 |$ t$ N+ D, }接着在DNS中开设一个泛解析到对应的IP地址。6 y; Y4 u1 p2 P$ l" n
就可以实现下面的方案。
/ U# K: b' A6 |7 E+ C: g! e$ v  N9 `9 l
域名:domain.com" G& i  M' W. b  @8 `
绝对路径:/home/domain.com/, m! Z& s! E5 W: k  p$ {
www.domain.com 自动解析到 /home/domain.com/www/
$ a3 w: A) R  g; t2 `! jabc.domain.com 自动解析到 /home/domain.com/abc/
/ ?3 x( [9 \3 ^- V/ H2 ]- B" ]! I4 S等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹! F8 A; p- N( [/ p: A
直接建立子域名名称的文件夹即可使用。不需重启apache。

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