  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14161
- 金币
- 2371
- 威望
- 1647
- 贡献
- 1319
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:, m5 v7 ^: W* L% K( K7 v
, @$ E, ]2 j5 Q# F" x, w) c: dRewriteEngine on
6 J2 m' P6 ^; S# u6 TRewriteMap lowercase int:tolower' F) ], [) y+ Q. M. d4 \3 z
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map# |% H# w7 c# Z$ N) q
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
( u! J* f6 a# H8 u+ IRewriteCond ${vhost:%1} ^(/.*)$
7 G8 A; P- k0 kRewriteRule ^/(.*)$ %1/$1
9 j" n& W( h! w5 U5 w# J( g
% O' w4 G6 l- U! k0 w3 C! U4 j, R* p
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
# d6 V0 D2 }; G/ \* P然后,在这个所在路径的目录下创建一个文件: vhost.map N6 _5 ~( }% f Y9 k: i: u5 p
内容为:" }0 `9 o6 w$ p9 Z
[! j0 P/ t( |2 Awww.domain.com /usr/local/www/data-dist/domain
" B' u _0 C' O0 {7 |9 @5 m' vbbs.domain.com /usr/local/www/data-dist/bbs
# h( a2 \: p4 F/ v1 I% ~% G- janyname.domain.com /usr/local/www/data-dist/anyname
; S$ p5 O# d: p
' q$ b1 c3 F4 N" ]4 k以上部分都是:” 域名+空格+绝对路径” 的形式。
' C, w5 k2 k+ `) E% F
' k& b) s3 }( J8 j* Q" @- ^' N最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:7 Q' [2 S- Y6 [& ^9 p
domain , bbs , anyname 等等,理论上可以无限。
; D8 w9 H6 }+ N, G4 V! w/ n( L3 ~ O4 Y/ a, C% y& @
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
1 R! H9 Y: j2 u, `$ P+ z2 \随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
\) A% D. Z7 W! I0 l) G% S/ u; a, ?! l0 B9 z
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
; S' j, X w8 W0 t. z第二步:打配置文件尾部加上3 G0 t8 B# w1 E+ f
RewriteEngine on4 {' p$ `+ @7 i5 ?: U2 S# U
RewriteMap lowercase int:tolower
. q/ N' e7 x" [6 V#定义映像文件
: P- R. P* e( ~5 E' ~4 C ~RewriteMap vhost txt:/apache/vhost/vhost.map! A1 y' N6 \/ r9 p5 @9 d
#处理变名9 Z7 I1 C, I+ ^) j/ \
RewriteCond %{REQUEST_URI} !^/icons/6 D9 U7 g: s2 [# L: c
RewriteCond %{REQUEST_URI} !^/cgi-bin/2 J( C' F# J |7 R! P& w C: `
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$. N0 r7 }- ^5 Q( I4 u
这里做基于文件的重新映射3 ~1 z3 S: P5 t. N* X; g* t3 ^% h, O: E
RewriteCond ${vhost:%1} ^(/.*)$ S0 R: B& e+ B$ t# [9 O
RewriteRule ^/(.*)$ %1/$1
" ?) T& r' f" |0 g! SRewriteCond %{REQUEST_URI} ^/cgi-bin/2 |, @- q3 l, ]+ p3 y
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$/ t3 v+ S% v6 m g+ k0 k0 x* Q
RewriteCond ${vhost:%1} ^(/.*)$
1 D% r4 Z8 }/ vRewriteRule ^/(.*)$ %1/cgi-bin/$1+ V+ _0 i5 z) {* X; j
8 z4 V6 j3 o" H k2 f注意:vhost.map文件是域名和空间映像的文件,格式如下: * h4 v5 \6 ^- q f ^% r
www.abc.com /vhostusr/www.abc.com5 |- F- T* P& |4 N7 H, @8 V- L& d
www.xyz.com /vhostuser/www.xyz.com, _, n9 | Q( b8 A
www.cccbbbb.net /vhostuser/www.ccbbbb.net2 _2 j1 _- X1 ^
.
7 k- y1 T5 U2 l" m: n4 a& J- V3 x.+ j- g- d5 l: j, G% a f q9 q- h
.- E% \4 x5 |! Z3 U7 a, Q S
.
+ {) U( D! h/ o(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)8 _% p0 v- o9 ]; l5 L
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~# y( }# N0 q3 L5 G& B& r7 N% W
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~* z. r2 x9 [* x
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~; c6 ^# d) d9 P! N2 M
==============================================
" T& a, {/ p) P# S方法二、
# O# H/ L! J8 w$ K b" r6 l s5 ^/ l) Y+ n+ f3 s3 w
/ e- M! _" @2 ?7 F: J% Urewriteengine on& u0 J- H2 o! g# P Q/ l
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$4 ~$ F& ^" m3 G1 ^8 ], l$ K, K% D
rewriterule ^(.+) %{HTTP_HOST}$1 [C]9 Z: P6 q3 `. j# @: @6 c8 y
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
% r; j6 j$ y; D% X5 q" g" `其他配置文件
" H. ]- k% O% n! t) @ N1 M' G; a& }8 ~1 s% A& [1 B% b, x
接着在DNS中开设一个泛解析到对应的IP地址。3 S& S% @3 Y" S% V9 T, J1 O
就可以实现下面的方案。9 ?5 ^& e O7 I/ |* ?# X
7 c* b3 t+ C' z6 F# }域名:domain.com6 ^- h p* ^# z4 \7 ~
绝对路径:/home/domain.com/5 V* Q7 Y# {% M: s; L; v2 k
www.domain.com 自动解析到 /home/domain.com/www/
; n( R# t+ i1 J) eabc.domain.com 自动解析到 /home/domain.com/abc/' B M: s+ B b3 T
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
9 l3 A5 H2 _7 O# Y( H& l. U直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|