Board logo

标题: 独立主机Apache 配置二级域名 [打印本页]

作者: admin    时间: 2009-4-26 19:44     标题: 独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:% v  G' D& D3 z

0 k, v+ R/ U8 A0 p$ MRewriteEngine on
- |4 b/ z' S% A' w2 ~4 G9 eRewriteMap lowercase int:tolower
# V4 n) V! b6 `) m! B% Q7 {RewriteMap vhost txt:/usr/local/etc/apache/vhost.map: Q$ u; {$ A& }; R1 q/ F$ L, O
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$/ C; E4 w' \9 b) f
RewriteCond ${vhost:%1} ^(/.*)$3 F0 U9 H2 w0 _( y* {# X. i
RewriteRule ^/(.*)$ %1/$1
. G" |+ o) x4 S% L; @: X% D* T
0 r7 Z9 e: \1 y' o8 T# q
+ C5 I# V  Z8 x; z2 u' P8 K其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
( B. T* Q7 w  |; C$ D; i' w3 J然后,在这个所在路径的目录下创建一个文件: vhost.map
9 e" o2 i5 c4 o  H; J* c内容为:
& F% T6 `' @* o! ]( A3 c
$ R* c3 F" @5 D4 b* ], b8 ^5 ewww.domain.com /usr/local/www/data-dist/domain8 N( @4 T# ~2 ^. ~! L
bbs.domain.com /usr/local/www/data-dist/bbs
% g1 U8 ?* j) ianyname.domain.com /usr/local/www/data-dist/anyname$ }( w& P) s8 [1 D7 R3 n' Q, I( K+ ~5 E

- q& _2 W- g  ^3 {9 S+ S以上部分都是:” 域名+空格+绝对路径” 的形式。8 l6 R9 ?4 {5 Y3 Q! H

9 M, u* R/ X7 B3 N# O- v3 u最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:8 m; i. e2 q4 O
domain , bbs , anyname 等等,理论上可以无限。7 o; d/ P3 B( c& |  ^; O7 N
3 y, E, }. {! f/ S  L, w
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以  e# I9 t5 C0 V5 d8 C6 T& {) ]
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
, m  k; r/ _( W* f/ V% H+ Q! Z& U5 F* e2 S
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。/ d! P- Y2 W% V+ R4 s4 y1 r
第二步:打配置文件尾部加上
0 F$ i+ K, _7 k( S8 ^/ ]0 {: bRewriteEngine on
9 X8 \: Z& V7 s0 C& U1 BRewriteMap lowercase int:tolower
: f; `  S. a. P) a5 m#定义映像文件
3 p$ S* j- |$ r+ S, M) G9 ^  o8 T" ?RewriteMap vhost txt:/apache/vhost/vhost.map' ?5 z# ~8 u% ~# ?1 w" }8 O8 r8 [' ^# p
#处理变名
* x; P0 G0 k* e* Z6 ^6 e/ Z6 BRewriteCond %{REQUEST_URI} !^/icons/
4 L7 V) H/ w" c( A: k: o+ ~( m/ }RewriteCond %{REQUEST_URI} !^/cgi-bin/8 X* f2 E; _/ `% u
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$* k( E- @: f9 L- f' D7 e3 Y# @
这里做基于文件的重新映射# `6 j( W& \& G8 t* \$ F8 E3 `. B3 i
RewriteCond ${vhost:%1} ^(/.*)$
1 o( m3 y' ~; ?6 M7 U1 V6 V& URewriteRule ^/(.*)$ %1/$1- s. w* u! q8 ~6 V' f
RewriteCond %{REQUEST_URI} ^/cgi-bin/0 y3 H4 o* [4 U
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$' s6 n) t: L+ F& G. f/ n
RewriteCond ${vhost:%1} ^(/.*)$
# R) T* ?5 ]3 a/ _! r) k3 ]3 m7 N) j8 MRewriteRule ^/(.*)$ %1/cgi-bin/$16 d9 L# D8 H. _  x8 g
" K( M1 t0 w' k: p" {. q
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
1 @+ l: {6 c" P2 |2 M" {, uwww.abc.com /vhostusr/www.abc.com
& z7 |& o1 a( H1 h  R) X& ^www.xyz.com /vhostuser/www.xyz.com
% B* K* Z- R4 j/ k: Pwww.cccbbbb.net /vhostuser/www.ccbbbb.net; t& ~  i6 r4 `
.
7 t$ l( _; i$ V) O  x* s.+ G9 D6 Y3 x& ^8 _
.
5 ]5 }/ Y. x3 o$ M) G' P6 q8 z" P8 m.  X& {! ^6 n- b
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
9 j, t0 i: |5 o9 a( O第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
7 y0 ~! P7 y8 F: G$ \% o# m5 f其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
3 s9 J1 z# z: b/ m. B+ I( Z' x注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~5 H0 s( F" z, G& \4 v  [
==============================================
* S0 P# N$ |: Z4 X2 A% W  X方法二、
) c& T3 m' D2 f" d2 h/ ?7 z  n7 b/ k
' i, @  D8 ]/ C" m' V* k) X% L; y
rewriteengine on( Z5 R& r" a1 q- x  C. m
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
2 m+ ~  N: A9 G1 s+ O. Y' _rewriterule ^(.+) %{HTTP_HOST}$1 [C]
, o1 R6 U! Q2 crewriterule ([^.]+)\.域名\.com(.*) /$1$2' v3 V3 N9 ?" k: s6 l- D. Q
其他配置文件; K8 [+ m! p$ s& |3 E
4 }  q, Z- c  C, M8 e
接着在DNS中开设一个泛解析到对应的IP地址。3 ?4 v% a0 L* L# ?& L
就可以实现下面的方案。
( B- B% i8 Y- `# f% N! i+ x9 \7 Q0 u
0 K  ^$ [; y* D. Y! x7 W- o域名:domain.com
' N$ E3 d9 `( r4 Y# f4 a% D绝对路径:/home/domain.com/) u! V! c7 W- o7 ]
www.domain.com 自动解析到 /home/domain.com/www/
9 i: Q" Q3 w5 p7 F9 T* u$ ?; kabc.domain.com 自动解析到 /home/domain.com/abc/# Y- }: w: v, t6 l
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹. z) R6 T7 n' D, c) P8 z
直接建立子域名名称的文件夹即可使用。不需重启apache。




欢迎光临 捌玖网络工作室 (http://89w.org/) Powered by Discuz! 7.2