返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
% q1 o, ^9 y! J, H/ U
5 G# z' c$ ?- z6 V& f8 nRewriteEngine on
$ v4 I5 l, n4 v* ^2 `0 K: W! |RewriteMap lowercase int:tolower4 p- {' @! \2 Q! |% s! n
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map- C- {9 ?8 s& h+ j7 F
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$  K- R; w( f( v; F9 _( O4 q  U! i
RewriteCond ${vhost:%1} ^(/.*)$
- h" u9 G8 k0 r- [8 uRewriteRule ^/(.*)$ %1/$1. C* D; r# p% V6 T
! O; |7 P) Q% [1 f

* j  s* s- H+ q9 G' g& P# o" F其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。0 ]. L; o+ c, W& w3 m
然后,在这个所在路径的目录下创建一个文件: vhost.map- F3 N! j4 h, B
内容为:" x) g4 b0 A, _
  I0 j$ z" V! l( p7 A2 W
www.domain.com /usr/local/www/data-dist/domain
! d% c/ \' B' c3 e) Bbbs.domain.com /usr/local/www/data-dist/bbs
2 N) v; H/ Q; j/ n5 Vanyname.domain.com /usr/local/www/data-dist/anyname
0 Z& }' T$ r# c* ?
2 }4 L/ w  R+ v7 }8 c: l9 Q, A! r以上部分都是:” 域名+空格+绝对路径” 的形式。
# N% l$ l  O7 ?2 `9 J
3 ]- p( W7 y# j1 w+ ~最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
. f. ]* Q! U+ J3 r4 r/ ?6 bdomain , bbs , anyname 等等,理论上可以无限。
; n6 z* M* k  ]2 b0 _" ]/ {3 n# Y0 S
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以9 t  K+ ]3 {! ^2 @/ M
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
- y8 y7 f$ {9 n: K% ]6 E) Q$ U% A! P, {7 w
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
1 H0 q) ~1 B/ P% q4 |7 A第二步:打配置文件尾部加上& t* h3 H' x) [2 t
RewriteEngine on' d# T9 A4 L/ @8 g, ]! j# p
RewriteMap lowercase int:tolower
; E4 x: J% _8 G, O" J4 w#定义映像文件' a( b+ g6 d- q9 ?' o2 C
RewriteMap vhost txt:/apache/vhost/vhost.map9 W2 o/ H! M) Y) t. N' ~
#处理变名/ R9 f+ f* ?7 S: G6 d9 O4 D7 X
RewriteCond %{REQUEST_URI} !^/icons/% d. A% G& X9 x
RewriteCond %{REQUEST_URI} !^/cgi-bin/
$ @* s$ C$ w7 N5 e  ^2 qRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$3 J1 T" x1 k! t' K
这里做基于文件的重新映射) A, M# \% a/ {$ s- i: p* y
RewriteCond ${vhost:%1} ^(/.*)$! q. @4 `% |; q, W, G0 L
RewriteRule ^/(.*)$ %1/$1
) T- K5 u! l  uRewriteCond %{REQUEST_URI} ^/cgi-bin/# E6 e' s* a$ P/ P2 x
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$' i8 n' U, @7 l1 {
RewriteCond ${vhost:%1} ^(/.*)$
" o$ v% b4 G$ V5 U: vRewriteRule ^/(.*)$ %1/cgi-bin/$1
& i0 l( X, l# e2 P7 [2 L) v: P# Q. ~( g$ @, ]" ^
注意:vhost.map文件是域名和空间映像的文件,格式如下: 0 v2 b  o6 C8 Y1 ]. ?- `, {7 S
www.abc.com /vhostusr/www.abc.com
8 k$ E( s0 M  c( q' Bwww.xyz.com /vhostuser/www.xyz.com1 T9 m! ~& O: I& N* o0 k6 p
www.cccbbbb.net /vhostuser/www.ccbbbb.net
5 n. j# d3 B: p8 j- G  u# ]" R$ g$ M., V' n3 e  H) z0 x5 Z
.) ]1 C/ w3 i  w/ f
.; T# ?9 w9 S% U! K: R
.
( l" I+ `: f/ i6 H4 A! Q(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)3 }6 V4 X( d# E+ [
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~) k8 ?+ W# F8 f. r7 o% m3 Z
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~  E) l8 P) a( L1 J: `" L
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~& ]- [# _3 k# l9 z/ C/ n% u, ]
==============================================- S9 Y0 ]1 b& y. \1 q) T4 w
方法二、- f/ }! A7 N7 K9 i
1 G& t& \. h, N, ]* \# G, X

( X7 h6 r; _' f* Rrewriteengine on
- B% l% e0 W' `) U, M- {rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
$ t( |! f3 D( [; a2 p; q6 vrewriterule ^(.+) %{HTTP_HOST}$1 [C]
; M9 J2 l. J$ Q! q, _rewriterule ([^.]+)\.域名\.com(.*) /$1$2
- b  z3 p1 y3 K2 Y; J1 t其他配置文件
* H# x# U2 R! ?7 c) U0 D% P% ]2 @. ~. y7 e+ Q0 a8 q
接着在DNS中开设一个泛解析到对应的IP地址。* P% G3 P0 C0 Z# H" Y% Z8 U) y
就可以实现下面的方案。# L. j  u- Q1 @0 u/ t7 b0 j" B
. ~. L. R3 L/ L# u/ Z% T( \
域名:domain.com
% n8 y* v( r5 h' w8 _" \绝对路径:/home/domain.com/( s, h; `, w1 w: {% _
www.domain.com 自动解析到 /home/domain.com/www/
: C8 Y! B8 a9 P" y; o+ }abc.domain.com 自动解析到 /home/domain.com/abc/
: D+ V+ N2 v3 F/ O: l, h7 b4 x等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹7 t/ A) b1 T% Y
直接建立子域名名称的文件夹即可使用。不需重启apache。

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