|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14321
- 金币
- 2446
- 威望
- 1647
- 贡献
- 1394
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:8 B) S! X8 o4 g7 I% V+ e
8 s: [5 S" F8 Y! E0 M
RewriteEngine on' w1 F! o: s& I0 A9 J& } Y
RewriteMap lowercase int:tolower0 D& i/ |' O8 y6 k
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map7 |9 D$ S2 W2 V) \
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
& k/ h/ B, @! g: LRewriteCond ${vhost:%1} ^(/.*)$$ f4 F2 Q4 I2 _+ Z
RewriteRule ^/(.*)$ %1/$1
0 j4 X3 A8 A- z* M ~1 I0 k) A/ c1 u+ C- b
- Z4 ?7 l6 W% r/ _) w4 Y5 m. l" B J其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。8 Q3 C& h, A5 [( O
然后,在这个所在路径的目录下创建一个文件: vhost.map- g( d2 s# i7 j/ ?" u3 [
内容为:% J0 k) y" h; ~, Z) \, [9 e& H& o/ f
. c F5 |, G# d# ^
www.domain.com /usr/local/www/data-dist/domain
: A; W. {# l# g: z8 tbbs.domain.com /usr/local/www/data-dist/bbs
+ [: U( |5 |5 `. j# banyname.domain.com /usr/local/www/data-dist/anyname% u* m" q- L; g- J0 N$ H
) G3 t- o( Q) K" Z( G
以上部分都是:” 域名+空格+绝对路径” 的形式。% D7 V& B0 a# t% m! U- y" T
- y2 n* q }& z& o- ]' _1 c
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
" M2 R, d3 @4 a. o+ z& s; N Idomain , bbs , anyname 等等,理论上可以无限。6 I, `8 W) x7 \' f* W% H" L
& ~" V: |: y, l+ E
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
! p3 U' r4 J' ]; ^* J2 u0 B2 y J随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。6 H6 {- v# J0 E3 s5 G' e
* \: x" G# J% N2 o% o" f第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。% H5 _4 m" B- g5 u* B, H
第二步:打配置文件尾部加上
. p' M" Z7 v {7 QRewriteEngine on
, ]/ I5 {# X+ q2 l7 ]RewriteMap lowercase int:tolower
( e. w/ ^/ A$ R! x) Y1 u#定义映像文件
8 s9 i5 @2 i7 Q5 ~0 p5 U! FRewriteMap vhost txt:/apache/vhost/vhost.map% p% f* G+ |$ \5 d( q' ]2 e
#处理变名
: c; m1 O# C: C0 H4 hRewriteCond %{REQUEST_URI} !^/icons/! X% Q# k+ w4 }
RewriteCond %{REQUEST_URI} !^/cgi-bin/
3 G! J Q. S, B2 @. ~RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
$ x5 X# `5 H- B q: |3 Y这里做基于文件的重新映射" P+ R) _4 l& f7 l$ Y. J
RewriteCond ${vhost:%1} ^(/.*)$! d: E! |, c* y/ g H6 s0 V
RewriteRule ^/(.*)$ %1/$1
0 D# @7 w/ Z9 h0 _/ yRewriteCond %{REQUEST_URI} ^/cgi-bin/
; j5 E% n9 [" H* HRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
& D. ]9 W( [3 r! Z1 z, ]RewriteCond ${vhost:%1} ^(/.*)$4 B( ^1 J/ I5 s2 [( r
RewriteRule ^/(.*)$ %1/cgi-bin/$1# [8 c. X- K) |
! I" e4 v& `4 @4 t% W4 H/ U
注意:vhost.map文件是域名和空间映像的文件,格式如下:
- n6 C1 y1 _1 C2 I; mwww.abc.com /vhostusr/www.abc.com' m$ p! Y+ R* K+ e+ l
www.xyz.com /vhostuser/www.xyz.com5 t$ f- n4 r, D W" _6 Y1 q8 Y
www.cccbbbb.net /vhostuser/www.ccbbbb.net
/ i/ P7 ?1 _% g, S5 D/ e.
5 c/ w/ H; M( [.8 D b5 N }- o' Z% O5 X* H, Q8 ~
. D: y+ `; \; I& x2 {/ N
.
H5 F' w8 u) W! W3 N(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
+ T9 ]" _# {' d8 F- O; D, d# ]7 \" k第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
/ a' C5 y$ X& w/ d; P其实这个可以用php脚本来完成的,很简单的~~呵呵~~~4 Q& Y4 Q* Q5 C& x3 P/ P' A
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~ C, _7 s* p( x) ?% A6 ~! w$ x
==============================================3 L+ g0 t# g8 x( P2 T/ w: c
方法二、! _+ S5 L7 H. V8 g- m# t, z6 K9 M
% V. v6 [4 s( V3 s+ { E+ z
5 z5 A4 U I7 S. C
rewriteengine on# \# d o/ `( o4 H
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$4 h' M% x, [- k" k
rewriterule ^(.+) %{HTTP_HOST}$1 [C]) p- A3 R- V% f$ D
rewriterule ([^.]+)\.域名\.com(.*) /$1$20 U/ c+ K( X3 K" F* y
其他配置文件. y5 m% q2 w0 J+ ^
2 f r# l1 X1 O4 B# _- x& T接着在DNS中开设一个泛解析到对应的IP地址。
. S) f% I' U6 |; ~: a c就可以实现下面的方案。% q+ B+ N# m1 k+ R0 M" g: e
7 k( G/ U3 C$ Z0 C5 I4 S" r
域名:domain.com
& s$ l# e$ M) O绝对路径:/home/domain.com/, D% }, S; |9 @. e8 R4 O
www.domain.com 自动解析到 /home/domain.com/www/
; o1 V$ Z( D7 A ]; ^: {5 U4 y8 Mabc.domain.com 自动解析到 /home/domain.com/abc/
2 W7 Z+ f c: f3 G. o) |2 c) B" t等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
$ n( s7 Z/ ~9 ]* ]+ o9 V直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|