返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
" O/ X, g9 k& z2 f
! U5 B/ z$ W! w8 S# S4 D' c9 nRewriteEngine on. L) }- L3 {) _) v' U& D9 M
RewriteMap lowercase int:tolower& \& I( C9 D0 F$ S" i. z( J
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
5 F% n# e4 L; x  M$ N- p" uRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
& O5 l) T1 g6 B( c; CRewriteCond ${vhost:%1} ^(/.*)$' z1 D: W) ~8 E. Q; o( c
RewriteRule ^/(.*)$ %1/$1
8 m& s# \7 h' X, N9 ^
% i; n5 i) S. Z1 t: }, k2 {/ g
  {2 b) N; z+ ?7 O9 e. W8 N5 X其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。8 I2 X# m3 Q4 A# V: l
然后,在这个所在路径的目录下创建一个文件: vhost.map. H4 ]( x) ^$ |  l" g7 c
内容为:
/ m5 K- j4 l. T: b6 T) _4 @9 f) L# M4 k% w( j7 {. j  L1 L* G" F
www.domain.com /usr/local/www/data-dist/domain
) u9 z, u: H! p. m8 R9 ~# V/ bbbs.domain.com /usr/local/www/data-dist/bbs: G8 z6 a/ h# W) T- L7 y' x0 R
anyname.domain.com /usr/local/www/data-dist/anyname  D, D' }% H0 s8 ^

6 a% ]$ u( l5 O以上部分都是:” 域名+空格+绝对路径” 的形式。/ R, z8 g8 g3 Z1 R0 P3 {2 o

8 l- F* `6 S  [7 z4 f/ R$ m最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:4 W: G0 h8 z/ H" K  ]
domain , bbs , anyname 等等,理论上可以无限。1 z6 W0 M) t. k3 J( s2 k( d* z9 U
: o: `' R) f, F% E1 c& k5 ^
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
+ |3 F2 ]3 L; j% ]2 `" j随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
& K* G" f+ n% A
/ ^( w9 L+ R5 g) }8 Y. z第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。6 R  {6 V4 _9 U" H
第二步:打配置文件尾部加上
8 K" Z, a$ o# j& g' \6 v! I/ C0 hRewriteEngine on( X: m, k+ j5 d$ Y! a( n& ]
RewriteMap lowercase int:tolower- k" k  z' k4 T, r) s- ?
#定义映像文件7 j5 c7 M2 [. v' _6 {3 @* Q
RewriteMap vhost txt:/apache/vhost/vhost.map7 o* x  e, d5 [: Y" n6 B
#处理变名% T5 i6 w7 c5 y; s, F
RewriteCond %{REQUEST_URI} !^/icons/1 K; ~" a3 r# I5 K
RewriteCond %{REQUEST_URI} !^/cgi-bin/4 H2 P! h0 I5 u: R& [; N. W
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$$ k/ l3 c3 R. @7 L; q* |' }1 t
这里做基于文件的重新映射
+ C: Y7 d' Y( Y+ B4 ]7 ?& }RewriteCond ${vhost:%1} ^(/.*)$
+ E3 U, ]1 X8 I, cRewriteRule ^/(.*)$ %1/$1
: y5 }  T$ R! y2 r1 Q1 ?+ kRewriteCond %{REQUEST_URI} ^/cgi-bin/
$ ^) D, V* l, F7 U5 s* m. WRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$+ b% O3 R1 h6 D5 s3 o7 ^) f7 m' d
RewriteCond ${vhost:%1} ^(/.*)$
' w, c2 n) I- J  X1 o2 D0 K7 yRewriteRule ^/(.*)$ %1/cgi-bin/$1
$ z( Z* g" B/ e" p( e
8 M! `8 R1 l6 O1 |. x" n注意:vhost.map文件是域名和空间映像的文件,格式如下: 8 O, L' ?1 t$ p
www.abc.com /vhostusr/www.abc.com. u! l4 O. t; ^1 n4 {# t5 u. F
www.xyz.com /vhostuser/www.xyz.com
+ ]5 Q' h5 z- w+ X# ]& Jwww.cccbbbb.net /vhostuser/www.ccbbbb.net; S. _+ d2 D- o6 A7 u2 D/ f! i3 ~
.
5 D+ s7 x0 e, i' t4 m$ }.
  O; ]1 F$ j) b; a! R.! _- C# _  w- J# l9 m! r1 J. Q
.
' K% ^6 R, B) v1 V9 q(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
$ G  c5 n1 m( f2 ~第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~: j# d8 p5 B' T0 n1 J
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~4 u6 R0 G. s6 J& C1 I0 Y7 V  A1 ~
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~, r' K- {- |9 ?* _5 W* n  O
==============================================& c' V0 m% H, z4 F' n' ~' d# y
方法二、
! P3 K4 W/ M8 s8 W5 Z' f/ P% I5 V7 v, r* p% T8 k( l2 j% W9 w

4 G# o5 j% z4 R' k' Urewriteengine on
. I. N2 R8 G; E3 r$ v/ Arewritecond %{HTTP_HOST} [^.]+\.域名\.com$$ S/ l' C1 K( ?! z
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
. k9 ]- L6 }3 s/ s2 U& Arewriterule ([^.]+)\.域名\.com(.*) /$1$21 e1 x: T: V! }; r
其他配置文件
/ A0 n) w. K+ ~1 M( v5 G) _: E2 g3 V9 N
接着在DNS中开设一个泛解析到对应的IP地址。
: ^, G0 I' Q+ k就可以实现下面的方案。$ o/ T8 P& ^% W7 t

$ ~% `5 U& [! V" a  X域名:domain.com
7 \* j. F/ u( y% B/ y* R; g绝对路径:/home/domain.com/
4 Z& P. A/ g, I* g& mwww.domain.com 自动解析到 /home/domain.com/www/) |4 y8 w  ~* A1 [. _# ], f" P
abc.domain.com 自动解析到 /home/domain.com/abc/! G: ~; {. C# N, U: N% ~( S
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹" ]1 r8 z# |+ M) h3 x7 b5 i
直接建立子域名名称的文件夹即可使用。不需重启apache。

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