Board logo

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

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

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
0 l6 c' x- y% ^! E9 ?% J' F0 l; \. p3 j- A4 l
RewriteEngine on
" u" r) I* n; SRewriteMap lowercase int:tolower5 u) F, g& k0 O0 C! v; g1 o
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
9 t1 d" m. t! ORewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
+ k; J; w' z  X6 A2 h2 s1 aRewriteCond ${vhost:%1} ^(/.*)$
7 w1 A* }% D$ I/ h! H" mRewriteRule ^/(.*)$ %1/$19 a1 ?5 I2 ~# L, f4 t' }: i

1 m/ b. I  H5 B" ?) W0 ]& m/ `" C' e* X4 [; b2 G
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。5 O0 A! b' x) v" K, c1 P, d0 x8 V
然后,在这个所在路径的目录下创建一个文件: vhost.map6 R7 f* w; w! ~; l: d
内容为:+ l4 \; ~, ~( K6 h" n& q/ h( N
# g" Q) k+ _. L6 d% W/ L/ w
www.domain.com /usr/local/www/data-dist/domain
& }- D. M( Q' m7 {) R% r  |bbs.domain.com /usr/local/www/data-dist/bbs8 F+ y! u  g$ k8 Z  j6 H
anyname.domain.com /usr/local/www/data-dist/anyname
/ J5 D* `: X/ V/ }+ l* g
' D# j9 a6 |" ?2 {, Y以上部分都是:” 域名+空格+绝对路径” 的形式。
0 |1 N  b3 m9 s, m* }
0 Q4 |. X5 l4 e7 h; E  F最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
, G: Z. e- y; @. zdomain , bbs , anyname 等等,理论上可以无限。! t& X9 f4 U% g, Q( U
" i1 R8 B3 V8 z+ a  V% q
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
8 k/ y* C/ ?. W4 ^  b随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。0 {9 m" t/ O6 K: m
5 g& g* c7 U  p* q. f
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。" @4 `( l& A, ?5 O
第二步:打配置文件尾部加上0 J1 [8 k) K; p8 E
RewriteEngine on' Y% U  D* h, d
RewriteMap lowercase int:tolower4 K! q: d6 w& \% h) r
#定义映像文件
' Z2 f9 M# n$ QRewriteMap vhost txt:/apache/vhost/vhost.map
. {2 l* r9 e0 O( _2 p#处理变名
7 K: p- e0 N1 b, i* dRewriteCond %{REQUEST_URI} !^/icons/
6 H4 A* e0 t' e7 eRewriteCond %{REQUEST_URI} !^/cgi-bin/
3 \0 o* e! W% T! o4 r8 X& ARewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
1 j) d  C9 p& z" F. m: l这里做基于文件的重新映射
3 s. Q& H0 u5 \0 g; j3 mRewriteCond ${vhost:%1} ^(/.*)$- o6 Q" X( _  x6 \- G, q- J
RewriteRule ^/(.*)$ %1/$1  R1 n2 ~+ k( K1 Z0 l5 r/ S
RewriteCond %{REQUEST_URI} ^/cgi-bin/' J! d. S7 A4 |7 L
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
  A' I+ B) w# S' ~2 S* ?- {% {RewriteCond ${vhost:%1} ^(/.*)$
* n& |9 U6 X  a# K. p0 {4 O! oRewriteRule ^/(.*)$ %1/cgi-bin/$1/ k+ w1 j6 V' p- H# f' E

6 f5 B- G/ f! U$ p注意:vhost.map文件是域名和空间映像的文件,格式如下: 
# {4 F+ Q$ H) Owww.abc.com /vhostusr/www.abc.com1 Y+ Z/ Z0 m$ k, G) _
www.xyz.com /vhostuser/www.xyz.com
5 B$ P: o8 B: E1 |. Q+ Q; M8 [www.cccbbbb.net /vhostuser/www.ccbbbb.net
  L, V$ q$ V7 o3 E( A9 l0 o& P., S* c+ Y2 N2 g- d
.
" L1 U( e% E. P. }: d; r, H1 k.1 L& z3 h+ A2 s# k
.8 a9 S% a% z1 l: Z4 Y
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟); x7 Z, s) p% M4 P
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
, ]- I7 ?3 i9 C+ d5 G其实这个可以用php脚本来完成的,很简单的~~呵呵~~~9 j: E1 L+ |; g! L+ k3 J1 |9 T
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
2 J0 P% y. M5 D; |, f3 x==============================================
4 h4 v7 A" F' }0 O方法二、6 @+ w6 o( |8 U3 r! v3 |

2 T6 C# D( J, n
% Q# y- N" @7 m5 N* ^rewriteengine on0 W4 f! _. O. |( _
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$/ N% L8 k' B, J1 V3 ]* t" Z
rewriterule ^(.+) %{HTTP_HOST}$1 [C]8 [# b( _( c- p8 h' f
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
" h9 j( f( R1 ^. |其他配置文件
+ V+ }' K) |% C6 p7 m$ b. M$ G" {% s4 p
接着在DNS中开设一个泛解析到对应的IP地址。
4 J; g# A- t5 n* k4 w就可以实现下面的方案。" s0 @0 p  B& }6 G' V. C
6 z7 ]; w  B3 B$ \$ t2 w
域名:domain.com
9 |- d! B; s, [8 |( k+ Q4 q绝对路径:/home/domain.com/
8 L' x* F7 y! Z+ |www.domain.com 自动解析到 /home/domain.com/www/6 [  V- J0 G+ j
abc.domain.com 自动解析到 /home/domain.com/abc/
, Z* m& a0 s9 U7 x/ h& b等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹8 B4 S+ o7 g2 h  g
直接建立子域名名称的文件夹即可使用。不需重启apache。




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