返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:! r( G1 h3 M& T) ^/ L, y
8 R& S+ h: o! A
RewriteEngine on" Q# z$ ]  E2 y" ?: H5 X! W
RewriteMap lowercase int:tolower
. E+ v& ~0 x) hRewriteMap vhost txt:/usr/local/etc/apache/vhost.map1 A# ?) k& u. v
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$  E% G* u3 H4 ^- _$ M2 H) N
RewriteCond ${vhost:%1} ^(/.*)$
# {; p/ _7 U$ A. a; `% GRewriteRule ^/(.*)$ %1/$1
8 r% V' ^/ V! }# G$ W
7 g9 Z% e6 @/ Y' G0 ]+ a1 Q
+ F. X: j2 D8 `3 `, ~其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
- K- B) I0 \' I0 }1 S然后,在这个所在路径的目录下创建一个文件: vhost.map
7 b+ r6 {, z+ M* b6 v内容为:, H; Z3 A3 i1 [, N3 K/ _

, l; U8 b- y& h* Y. w+ h7 i& U4 zwww.domain.com /usr/local/www/data-dist/domain- l% O) \0 N6 y3 u: x% q
bbs.domain.com /usr/local/www/data-dist/bbs9 a. t' X6 P0 K. F
anyname.domain.com /usr/local/www/data-dist/anyname& `. r7 G9 p9 ^

. B- j' u3 R% [% p9 g以上部分都是:” 域名+空格+绝对路径” 的形式。
0 G+ y" b2 P6 \, o; F0 f! L  e$ D* L! k0 Q* q" O
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:/ A2 _# H% x+ p& M
domain , bbs , anyname 等等,理论上可以无限。8 o2 u1 q1 O1 H

+ q" U% Y4 L' D  v( E# r这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
% d" I" U- H9 T7 O; Q2 V随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。  c! y, {: h; q% F2 d9 U

' z* u9 |& H0 R+ S第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。7 V, G0 P# P" R
第二步:打配置文件尾部加上# _6 ~6 Z2 r/ b4 s" }% B
RewriteEngine on2 F" r6 E: |) m7 A- c, I
RewriteMap lowercase int:tolower
1 i# C. W% B" j! N5 e0 {7 t#定义映像文件, w- b$ A7 `9 r6 |! ~; r
RewriteMap vhost txt:/apache/vhost/vhost.map
; {7 F, E" b7 U$ k" @#处理变名
$ A' J& p5 {/ m2 [( S5 W2 q2 s- fRewriteCond %{REQUEST_URI} !^/icons/3 E+ G/ |: G: t" I# X
RewriteCond %{REQUEST_URI} !^/cgi-bin/
% Z7 {" k+ h1 P$ D7 `9 A6 L3 fRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
# N( W8 s: t* o1 s. j, d& U4 J+ `这里做基于文件的重新映射
! S: y9 V9 G; |. F) N+ GRewriteCond ${vhost:%1} ^(/.*)$6 Z9 X4 }' g4 q1 y( x! }1 u* p
RewriteRule ^/(.*)$ %1/$1
3 [' u1 v! J; W6 ORewriteCond %{REQUEST_URI} ^/cgi-bin/
6 {* }1 l0 F, H; G; zRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
1 R9 e$ c  g0 L7 aRewriteCond ${vhost:%1} ^(/.*)$" @7 }$ y" l5 ~8 W: C: F
RewriteRule ^/(.*)$ %1/cgi-bin/$1
+ A6 R9 h% O3 T2 P8 \4 y
* ^+ S" [2 w4 c& D. y. h注意:vhost.map文件是域名和空间映像的文件,格式如下: 
) J2 F3 B# _% J3 C% kwww.abc.com /vhostusr/www.abc.com
! u" T5 N7 t1 j9 T! bwww.xyz.com /vhostuser/www.xyz.com! u( o# M4 X6 f6 |
www.cccbbbb.net /vhostuser/www.ccbbbb.net
% m  }3 g1 F1 `2 I.
2 J) q- D+ E/ Q/ p/ C* L/ P" i.
$ z& P5 n# I( u, o.
5 m0 z+ M0 f2 W4 y$ F* g. v.
' P- g) S4 Y$ b% [3 X' j8 k% G(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)+ X& a  d0 f6 s$ q+ U0 T- e* s3 R; ]
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~  t8 S2 L5 i) a3 v
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
# f8 M5 l7 c, W  p; P" A8 e! a注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~) _# s$ t0 I* m- a
==============================================; T. x& r5 _1 m4 w2 a' H! s0 \
方法二、
0 Q2 Z/ r$ @% u% x# x& B
& m  J' ]' h* L' t( q& _, }; K# H% K/ }3 p" U
rewriteengine on5 c7 C! K% \0 V3 N
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
& Q; u: e/ a* u) O+ ^/ o5 erewriterule ^(.+) %{HTTP_HOST}$1 [C]
: i3 u0 J- y6 Y5 I3 V$ ^rewriterule ([^.]+)\.域名\.com(.*) /$1$2" Q' y  Y. P1 t/ `2 f5 ]0 ^$ x
其他配置文件
9 O$ [0 T& L! T8 ^; z1 i0 [
* ^, O. L7 Y7 |. h0 T% {3 K  A- s接着在DNS中开设一个泛解析到对应的IP地址。
) d3 J  m' e/ E/ ]& w就可以实现下面的方案。
3 P! w/ S' x0 E& r6 V2 J( }8 X( H* @6 m( C9 ]% s( o
域名:domain.com! u* s9 k8 b4 Y9 u# W
绝对路径:/home/domain.com/6 ^. [% w. u9 }
www.domain.com 自动解析到 /home/domain.com/www/
" S( R2 d+ B. Yabc.domain.com 自动解析到 /home/domain.com/abc/" f$ D: M, l( A9 A+ `  b
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
! Q. M) ]' y3 G5 s+ H( M. }/ _8 h' z直接建立子域名名称的文件夹即可使用。不需重启apache。

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