Board logo

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

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

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:9 h& Y& o& U1 m- N4 Q- ?$ p
0 ]; [' x/ Y, i0 t$ k& T% L- Q
RewriteEngine on& e' `( f$ n  V" @2 {
RewriteMap lowercase int:tolower  N  p0 K2 d1 y# z% ~
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
! ~5 Z& x  _% [RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$# _4 {) G  N" A5 r
RewriteCond ${vhost:%1} ^(/.*)$
* w$ |8 P* r) O3 Q' k, SRewriteRule ^/(.*)$ %1/$1, K9 I1 {$ d- o3 I
! y* B) D, n) c

$ G& R  u/ ]9 j9 I其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。9 J5 {' d; \* }) @* T' a8 {" @
然后,在这个所在路径的目录下创建一个文件: vhost.map$ [& z: X3 v: q( j' z3 o6 O
内容为:
4 \1 Z1 _& _+ K& l( ]& y- b
) T; g& C2 }. ^9 gwww.domain.com /usr/local/www/data-dist/domain
  ]; g, E5 g9 c  ~5 rbbs.domain.com /usr/local/www/data-dist/bbs
# L5 o$ w; |7 Z0 z! Tanyname.domain.com /usr/local/www/data-dist/anyname
; b: m& c1 c/ v' [+ F
' a8 }$ O. b" w  o以上部分都是:” 域名+空格+绝对路径” 的形式。
- c  F8 W  c! X7 Q( z* m0 c/ P* B4 D" {3 P, E( u: {- s, x$ t
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
, Q( O5 U1 j# H+ x7 }domain , bbs , anyname 等等,理论上可以无限。
, v: a+ f* n7 X! k/ N
8 @- G; }" T- k; n" t这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以' Z# o0 m, A& u9 |* ?( C6 Z
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。$ B6 c9 c/ U1 i) H( _  P; J

; [, ]* R# R! |) T: M第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
+ v& y5 G7 J7 e% Z/ D( l4 T第二步:打配置文件尾部加上
- q0 V. m8 R; TRewriteEngine on
$ {: c. I2 n; T) E# E3 U) ?RewriteMap lowercase int:tolower# T" l0 B3 U' i; [
#定义映像文件
$ N" `- b5 b1 |7 iRewriteMap vhost txt:/apache/vhost/vhost.map$ z8 v3 {& o5 p7 l# b
#处理变名* p6 \* G4 Q: a0 a4 j2 m1 H
RewriteCond %{REQUEST_URI} !^/icons/2 [; `- P4 g  W) x* t
RewriteCond %{REQUEST_URI} !^/cgi-bin/: t' n8 U: w) T' g( h: N
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
, K! g1 R) \$ Q) U8 G这里做基于文件的重新映射
" o) ?& g+ K6 {8 h8 v" i* VRewriteCond ${vhost:%1} ^(/.*)$
0 x% d$ V. d3 \) C" z# }RewriteRule ^/(.*)$ %1/$1
7 H2 s: \* h  ARewriteCond %{REQUEST_URI} ^/cgi-bin/8 Q& k+ e2 V) f  P. m' c) p. ^
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$" s- S9 B) |8 s$ L% L! h
RewriteCond ${vhost:%1} ^(/.*)$3 F  L$ J! P1 C0 W. C6 {
RewriteRule ^/(.*)$ %1/cgi-bin/$1$ y/ C1 z' {% k) Z1 [+ B; W

" L* }+ \9 k9 Q1 y; p注意:vhost.map文件是域名和空间映像的文件,格式如下: ( T6 ^* W/ I+ Z7 @) Q1 x
www.abc.com /vhostusr/www.abc.com
; w8 p8 Z# v7 n3 V, C% {* Iwww.xyz.com /vhostuser/www.xyz.com
  u% n5 f+ ~1 t! twww.cccbbbb.net /vhostuser/www.ccbbbb.net0 ]* x8 s, b9 j( @+ c
.
7 [3 q! w! }# \) W% T.. Y/ e+ i  J: }2 C3 A! t
.
: X+ O* |, J4 i' U" l" C.0 V; D* a: f6 m( I8 D8 _# C' _# K7 L
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
0 f, K8 _5 K0 T第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
  G9 |# C7 s. a其实这个可以用php脚本来完成的,很简单的~~呵呵~~~* n3 s% s; x4 u. v' F3 {
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~/ n) f( i6 {' l) |/ ]% N
==============================================' w4 t9 P4 W, v! ^/ U( H$ g( q
方法二、
8 k3 B6 W; ]. V" d5 ^7 P9 N
/ E% {8 Y$ H2 f1 ?1 [
- H) E% V& x- G2 l, Q. U2 k0 _rewriteengine on
. f) A" x* m. w" O2 P: ?rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
/ R# t1 ~: H0 U4 H0 Grewriterule ^(.+) %{HTTP_HOST}$1 [C]! O" U; v! M: x8 O
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
, |; S, y3 O5 i% p# j其他配置文件6 q, L3 Y' T. V* t% P+ v# H/ P2 p
% V8 u* [, g1 a3 r6 @9 H
接着在DNS中开设一个泛解析到对应的IP地址。
! V, F$ m: P7 _" B8 |8 p就可以实现下面的方案。; r9 U. F5 a7 |! e2 J+ [
7 \4 y  v* I+ [0 o
域名:domain.com
/ [! J  o% d& Z( i: n; Z/ i绝对路径:/home/domain.com/$ e$ u5 C! R5 r
www.domain.com 自动解析到 /home/domain.com/www/
' ^, C, T2 @& _7 v9 S  W$ Sabc.domain.com 自动解析到 /home/domain.com/abc/
0 k- K2 ]; _! y9 p) A) N9 E# b等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹; j0 k+ B& N+ g# o. f! Z( P# B
直接建立子域名名称的文件夹即可使用。不需重启apache。




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