|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14447
- 金币
- 2509
- 威望
- 1647
- 贡献
- 1457
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
8 `2 Y; T3 m1 b) |" W0 q% x' T' K) z" n% g- O- z1 t( V+ `
RewriteEngine on
' q0 `9 C2 r$ s& @4 {0 PRewriteMap lowercase int:tolower
3 c" |# p6 l& M5 \, LRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
) r& p4 k- O$ X6 C) ]4 }3 rRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
( \5 G7 Z, X4 e9 t! y; |4 JRewriteCond ${vhost:%1} ^(/.*)$
! n; w' p! A1 ^$ a# }# S% Z/ ARewriteRule ^/(.*)$ %1/$1 w2 o, q3 w+ p0 m0 s0 \; L5 c
& H2 H' U1 ^, y$ D
?: U( y1 b3 u: s4 ^" `$ K! @其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。% v$ t5 s3 B* Q# q. C
然后,在这个所在路径的目录下创建一个文件: vhost.map
+ {/ _* j- }6 l9 \/ j. x内容为:
: a# o' a4 y7 ^$ {8 R4 _% j2 k
) ~: R; h4 U, s& D" C0 Bwww.domain.com /usr/local/www/data-dist/domain' W* L( W+ N9 |# }. m
bbs.domain.com /usr/local/www/data-dist/bbs
- Q/ ?; k+ ]1 c9 P/ Sanyname.domain.com /usr/local/www/data-dist/anyname
# w0 u/ K9 ?2 ^
, J0 y+ G8 m: p8 z3 M以上部分都是:” 域名+空格+绝对路径” 的形式。9 t& S2 `3 o& @
* S1 _! K( ~+ }' N6 P
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:; ~. n: f6 b# A0 ^7 c
domain , bbs , anyname 等等,理论上可以无限。
9 N. q: o, M7 j" w* {4 R
# u! Z% ]/ f2 w- X这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
* [' l1 }, L% v5 G! L1 a随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
( f% p% Q8 m8 e2 ?7 K2 ^9 E# M! @# g, ], c9 t2 p, |
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
4 L' B$ [# `6 ~; b X第二步:打配置文件尾部加上
( v0 S2 w+ k/ RRewriteEngine on
) I$ s- b, S! zRewriteMap lowercase int:tolower
3 n2 `& L* `+ d8 b& a& J, i#定义映像文件( s* @ D4 i* |. H" v9 e
RewriteMap vhost txt:/apache/vhost/vhost.map
- g4 m; U/ _$ }( b' H#处理变名( F: r( g8 G, `2 J: x! E
RewriteCond %{REQUEST_URI} !^/icons/, r! a: k! I' J* f% V+ H: Q
RewriteCond %{REQUEST_URI} !^/cgi-bin/9 u9 E& Q. m0 `$ v
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
8 A( j) J0 a9 o这里做基于文件的重新映射& N7 u! j9 G) U$ Q W" L
RewriteCond ${vhost:%1} ^(/.*)$
+ G: U% ], b4 _+ JRewriteRule ^/(.*)$ %1/$1$ i8 K0 n6 y Z% ~! U
RewriteCond %{REQUEST_URI} ^/cgi-bin/
4 t; j- l) M r) G# V- Q5 lRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
, ?7 X3 P3 ?5 ?0 [+ R/ p- MRewriteCond ${vhost:%1} ^(/.*)$ q+ F3 F' H! ^8 g. q- T
RewriteRule ^/(.*)$ %1/cgi-bin/$1
0 z% K p1 U7 S5 F1 w& U9 V# m2 a7 g+ s' D& m6 q' z
注意:vhost.map文件是域名和空间映像的文件,格式如下: 6 X( H0 B7 h: ~
www.abc.com /vhostusr/www.abc.com
" V' x6 S9 P3 O, q9 M* C: `+ L9 @www.xyz.com /vhostuser/www.xyz.com
: T: Y, Q/ b: D# q: S1 Cwww.cccbbbb.net /vhostuser/www.ccbbbb.net
3 d& \* U% d- X! ]" _9 ^& _9 n8 D.1 I# }; v, a5 d3 Z8 @% b
.' o2 c6 v4 t8 r
.
& x* N3 R: g/ \$ r( Z& I5 e4 s.
2 i* t0 g, B' l5 B; V(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
, y) q( e# z! |4 h H2 a第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
. P% ]2 N+ m, `( v) q# [其实这个可以用php脚本来完成的,很简单的~~呵呵~~~. ~6 G9 M2 x8 w$ q$ J/ E( ^5 S! N
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
$ C' ?2 l. ^4 B0 o==============================================3 i+ q- M$ b, k) ~( v1 P& t: r
方法二、# s3 w& }1 J. w! p/ r$ T
4 M* X- B& j& x# p
! Y. W% m: n' k2 }rewriteengine on
2 q" u8 c+ R4 L' \rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
' T$ M& d4 [; s7 K% {# K9 } srewriterule ^(.+) %{HTTP_HOST}$1 [C]! Y$ T& S. ]: l G( q r! f
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
: i! t' E+ ^- o9 J6 P其他配置文件; K+ _" y: n* B! Z# e9 {4 F
# L) e4 X/ h% a% z接着在DNS中开设一个泛解析到对应的IP地址。
4 Q* V& w* D9 T- ]4 p就可以实现下面的方案。
; d& v( r# Z4 h8 A1 x) l, a# n7 C- i4 H, ?( n
域名:domain.com* l" z& @4 n1 C* _
绝对路径:/home/domain.com/" n! ]0 q3 q0 o" C
www.domain.com 自动解析到 /home/domain.com/www/
4 N$ Z, E. L! j2 v. m; [abc.domain.com 自动解析到 /home/domain.com/abc/; B3 Q! B+ q3 e( U
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
7 e6 L& A# t: r! |& k1 i- ]6 t直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|