  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14221
- 金币
- 2401
- 威望
- 1647
- 贡献
- 1349
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
# M. Q2 P2 F& g" @0 Y; r
1 F5 }6 p6 W* w* [RewriteEngine on( D4 H( l, s) e( X
RewriteMap lowercase int:tolower
9 M) I+ k! l3 R. a3 E! dRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
( X5 q/ |9 U* {# H# LRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$, M9 d" {; W8 B) g: P8 C
RewriteCond ${vhost:%1} ^(/.*)$
8 U5 g9 C* f3 {. wRewriteRule ^/(.*)$ %1/$1
# w, b' E+ J7 D" T% x1 u7 q' p, H; v) K& [1 u& l$ f
4 ?# B- P7 e3 X) z, g/ R
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。, y/ `' d3 c; z) d0 z( L; y# G% I
然后,在这个所在路径的目录下创建一个文件: vhost.map
; {- n% h! W4 h9 o0 b: H内容为:
( H6 o$ ^: k6 |; S/ l4 Z
( Z8 P% ]; v& L3 c; J, }" K4 Z l+ ^www.domain.com /usr/local/www/data-dist/domain
- o% T' q8 R$ j; Bbbs.domain.com /usr/local/www/data-dist/bbs- S+ R$ p% R, D* R% }
anyname.domain.com /usr/local/www/data-dist/anyname% u3 N# V* A: h, k' @5 L3 r
* ^& w: K3 K/ T以上部分都是:” 域名+空格+绝对路径” 的形式。) [! N5 D/ j& g l) ?: Q
) L/ f! I/ R7 Q$ ^. y- @
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
9 G; n$ ^- S+ q5 Vdomain , bbs , anyname 等等,理论上可以无限。$ B+ {4 O" B1 a2 U2 G$ D1 l
) `/ ~; ]- F9 j
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
0 }/ l! D% l- c* y8 ^7 D随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。5 d8 y7 v$ a$ O9 Z" B7 K
- o/ x, W9 j8 L6 ?0 {$ }$ E
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。& d, R2 J0 @6 |' Q/ F
第二步:打配置文件尾部加上
3 ?: O. g1 p5 P* U/ cRewriteEngine on
; R; R+ W4 y* S9 H) V) |, ZRewriteMap lowercase int:tolower
: D. C" i' b: `. [5 @#定义映像文件* a5 f9 G$ i' p) l
RewriteMap vhost txt:/apache/vhost/vhost.map
% ^; F' q/ M5 @: b+ b' O- u#处理变名
1 N# H; G! Y/ v, U2 N! ?RewriteCond %{REQUEST_URI} !^/icons/
7 c0 x o% t! g4 Q3 y% }RewriteCond %{REQUEST_URI} !^/cgi-bin/
9 j1 P8 f0 R4 g' j( C- VRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$( F% m' O d6 ?4 R, c8 c' T
这里做基于文件的重新映射
; Y4 {) R# A2 R. w1 lRewriteCond ${vhost:%1} ^(/.*)$
2 m/ l8 Q- S* C* L7 ?RewriteRule ^/(.*)$ %1/$1
# C% x8 U1 `, o) k& ~" w5 I, d& xRewriteCond %{REQUEST_URI} ^/cgi-bin/, M' d& }5 r+ y$ @ Q: j
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
( }7 P. R& N, H: [9 ^% N4 {RewriteCond ${vhost:%1} ^(/.*)$/ L1 }8 E8 c$ m. ] }1 V! H. W
RewriteRule ^/(.*)$ %1/cgi-bin/$1( b8 E) X/ @# C& Y/ A' I9 _
; V z: G, t2 _注意:vhost.map文件是域名和空间映像的文件,格式如下:
" v, ?/ F" j- g d5 ^, D/ H Y; V" J! M/ Rwww.abc.com /vhostusr/www.abc.com
b9 k, \ u; ^0 A& z9 e4 _8 c0 ewww.xyz.com /vhostuser/www.xyz.com% R' b0 g/ k5 }: O- m" v+ G" r
www.cccbbbb.net /vhostuser/www.ccbbbb.net' @" d. J! \, ` k
.$ L V" l! Q' f+ L) W
., Z. i6 R2 U/ V3 q, E% U2 J
." @; r( O- m* [: ]7 `- m; f" Q/ _
.
! w: U: q: y$ F" V(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
, o3 J: P y4 S: I第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~: a6 ?0 y- s$ {
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
- x4 i- j8 `* X0 s, W注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~3 i! X7 j: ]: W* Y. u# u6 o* [5 N; J- @
==============================================
: R b- s4 e* r" x方法二、
$ {; C/ l4 ?9 ^ m# ]' D& f3 e/ L% I- k
1 F; Y; O D; i5 Trewriteengine on4 D' n2 y; q) ?+ U/ p9 a
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$6 H. {! d2 d, z6 u/ n5 b. h* u
rewriterule ^(.+) %{HTTP_HOST}$1 [C]' S# [/ B9 G6 H# y8 @( a
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
! H9 a% v- l8 Q其他配置文件8 w. C3 u) `% ?+ u
, v; ~( B1 U0 o% W. j- u接着在DNS中开设一个泛解析到对应的IP地址。# F" B6 {% z i0 r& V7 H, U& I4 H
就可以实现下面的方案。
, J" d. E; Q b3 ]# C2 ]# T5 j: o2 K- @' z L6 j7 _- P4 }
域名:domain.com1 l% h- d8 V9 B9 O# h0 a2 @" R
绝对路径:/home/domain.com// G4 e2 G+ U: @% f% N% A0 x. D
www.domain.com 自动解析到 /home/domain.com/www/" v# s0 x& e/ [5 Y% v; \
abc.domain.com 自动解析到 /home/domain.com/abc/0 ~: @ F% ]/ i* H% @
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
5 O$ N+ L2 ~9 h/ T/ a" w6 m直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|