|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14389
- 金币
- 2480
- 威望
- 1647
- 贡献
- 1428
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
+ y- o: D' @( }. t4 D( Y$ }1 y( C7 m5 b1 _+ g V' I
RewriteEngine on
. a% |/ w) B* M! t2 a' }! ARewriteMap lowercase int:tolower! P: u/ N e2 T
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
1 m* I$ D$ D% f ~' ^RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$# S$ u! t! k. I2 _# o" H
RewriteCond ${vhost:%1} ^(/.*)$3 u, O/ h }2 `3 t" I7 b
RewriteRule ^/(.*)$ %1/$1( @3 \; h/ l" G6 G2 P
, W6 e$ H' m3 @2 _! J @ S% a& V! N+ w# v7 h% p
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。. `& ^# U' [5 y0 r: z6 z
然后,在这个所在路径的目录下创建一个文件: vhost.map
5 v6 Q( {! L" @: H8 x5 `4 C# q" M内容为:
8 f4 ~7 L$ V0 P: r" E1 s N, k1 c9 v/ @* \
www.domain.com /usr/local/www/data-dist/domain
+ Y7 J: J5 j6 {* U, cbbs.domain.com /usr/local/www/data-dist/bbs+ {" K! z1 n x/ C4 K- \( ]
anyname.domain.com /usr/local/www/data-dist/anyname2 k+ C7 U o- O8 E
$ r3 [! m0 e" g8 t- l% Y9 h/ M以上部分都是:” 域名+空格+绝对路径” 的形式。
6 a, ], E+ Y Q; j
! Q3 n. S8 t, Z" z$ O- X5 s8 c最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:1 r# e& r8 ?9 _" J F
domain , bbs , anyname 等等,理论上可以无限。
. k/ ?' M! b( E A# D
5 q4 P6 V6 u- x _这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
% f& y D# @, T, s! k5 S2 w6 f随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。0 v6 A! Z& g9 j# B! b0 h
2 c$ J6 }' R, L; l" W3 I! I
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
( B, S9 `- Q# B第二步:打配置文件尾部加上
, k' C7 v4 M/ }: S8 t3 vRewriteEngine on
; n- a0 n0 F. ?1 E4 ~% vRewriteMap lowercase int:tolower
! _+ H5 g/ |% j9 D- M M#定义映像文件
F7 b) O$ E% c4 j) }3 WRewriteMap vhost txt:/apache/vhost/vhost.map
, g: h: N! F5 N0 L1 T+ L#处理变名/ x$ l- p, t m* x5 M6 S8 X7 _0 h
RewriteCond %{REQUEST_URI} !^/icons/
! r! @& k# m1 U' h7 l! T' @$ `2 DRewriteCond %{REQUEST_URI} !^/cgi-bin/
9 `1 o8 b$ p+ p0 X8 T0 @RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$% g% Q9 r6 i7 Z- X# ?; h ?5 x& d7 x* p
这里做基于文件的重新映射4 Q# S# q8 L7 L
RewriteCond ${vhost:%1} ^(/.*)$
9 t3 V& N* s7 i# a7 wRewriteRule ^/(.*)$ %1/$1: E8 k5 p, l" z6 ]/ f
RewriteCond %{REQUEST_URI} ^/cgi-bin/
9 \. b# {! \ G# m3 e5 H" P# A& _RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$5 W% }4 j8 Q) Y( x
RewriteCond ${vhost:%1} ^(/.*)$
/ t) `( U- N# M r) h1 v$ eRewriteRule ^/(.*)$ %1/cgi-bin/$1- U( z2 I% Z- A3 f/ @# ]
4 L0 O" @& @1 B! C7 K注意:vhost.map文件是域名和空间映像的文件,格式如下:
* J3 \+ S& E( H- ~3 u7 c+ z! ywww.abc.com /vhostusr/www.abc.com. b% ?5 f# u/ y2 [: }$ Z
www.xyz.com /vhostuser/www.xyz.com' | K f* L! t
www.cccbbbb.net /vhostuser/www.ccbbbb.net
: V1 f$ u+ u/ F' D0 t! R: ~1 O., o- e# N# b4 Q+ A2 K- T
.6 g: x, E! G( C* v
.1 y) v1 T+ L3 @9 U1 Y
.
5 L! s& K7 a5 C+ ^5 L! K8 a(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
7 H/ I0 M- _$ {4 s m: n第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
& Z! d% a, ` L. m其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
1 e& r3 ^! h% F/ V }注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
# X( M6 b% P+ m$ B; O& X$ x3 P d==============================================9 i+ c5 g, ?: ~
方法二、
* J) x; O: e/ |& k- @; h- f2 d8 D+ T8 [9 j0 j( L# Q" M5 s! I
" W, x# u5 x1 [1 Orewriteengine on
5 G3 R. S) N8 S' r5 A& s4 J2 hrewritecond %{HTTP_HOST} [^.]+\.域名\.com$ W' [; Y3 k0 @5 g
rewriterule ^(.+) %{HTTP_HOST}$1 [C]% a5 { d" o, |* H5 P/ y
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
( w( t3 G2 |# P, ^8 x其他配置文件; s* j0 t! y, \0 V* t" T( N
: q$ m- h3 C7 y/ l3 k接着在DNS中开设一个泛解析到对应的IP地址。) Z: Y9 y* q3 v' k$ P' c
就可以实现下面的方案。
- l# ~4 W% B: E g4 q8 g5 |3 x0 W! v1 \ q: y1 {- g& o$ T# j
域名:domain.com7 h; z, \9 m: _1 T- y
绝对路径:/home/domain.com/
! B% H. U+ K0 bwww.domain.com 自动解析到 /home/domain.com/www/
/ f, C8 _6 g; a' v3 g+ j: dabc.domain.com 自动解析到 /home/domain.com/abc/
1 Q$ |; M, v2 f3 v! D: N等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
9 S9 A# s/ E S6 K- H- P: q, W直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|