  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14197
- 金币
- 2389
- 威望
- 1647
- 贡献
- 1337
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:7 T' x0 p V# V/ k! d @ S
7 ?' p+ K" F5 n( w2 R" ?: X# tRewriteEngine on
8 |. @+ i! ]& y! q# a/ l5 ^RewriteMap lowercase int:tolower; |7 g7 ]# ^( s" ^7 }
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
' h R+ ?9 b; s& Z/ _$ QRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
- h: {6 Y+ M( ^) [ z# g( fRewriteCond ${vhost:%1} ^(/.*)$
- J$ p& z& r4 r+ N5 s6 r6 rRewriteRule ^/(.*)$ %1/$11 e5 y' t; J3 C- F
7 @8 f l% A: S/ T \6 C6 a
. @1 u. [& ^$ \0 k4 ?其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。 J8 B* f& ?$ S' C
然后,在这个所在路径的目录下创建一个文件: vhost.map
+ c0 T/ W, ?1 \) t内容为:" @6 C+ z! z7 l, ~6 e
, N2 O4 D" U1 G, v3 D& u( }
www.domain.com /usr/local/www/data-dist/domain
" \' I8 W3 y5 R" |bbs.domain.com /usr/local/www/data-dist/bbs
6 s5 i0 _ c3 V/ y; E, l m) e8 Janyname.domain.com /usr/local/www/data-dist/anyname* q P( N. t$ w* w
0 b7 B" s% C/ b2 ?8 y7 s以上部分都是:” 域名+空格+绝对路径” 的形式。3 s5 T: Q) ^- m/ b5 p# ^
. i. a i9 e# @) N9 r
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:3 t- w% A4 A; `4 \% l
domain , bbs , anyname 等等,理论上可以无限。! r1 i+ I' ^! [) W: X9 m v$ Y
) L& x T. I" @4 d4 e5 `/ I% E这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以7 o+ e/ E" `9 v& v, l' I
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
* G3 z, | y0 m6 K
0 |3 S0 i0 j4 ]5 H) G/ v4 M' Q# S第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
/ M+ H( [7 i2 Q/ j9 f# ~+ I第二步:打配置文件尾部加上
6 h$ Z p4 S, Q4 F i& A, }" QRewriteEngine on4 Q5 h5 k! _* Q! w! U3 a
RewriteMap lowercase int:tolower3 f' ^$ i9 c, I
#定义映像文件* f# O8 e4 P- s; ?8 D3 Y" o
RewriteMap vhost txt:/apache/vhost/vhost.map
. j# c8 a; ?2 K7 F3 V#处理变名
# ~3 V6 v& G/ jRewriteCond %{REQUEST_URI} !^/icons/, S; E% E) Z5 s2 _, O
RewriteCond %{REQUEST_URI} !^/cgi-bin/# N7 J& I X! d4 \ g# c; g
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$ [6 t2 d% X) r9 r6 H. h
这里做基于文件的重新映射
& y* f, X( T9 x" cRewriteCond ${vhost:%1} ^(/.*)$) I) a/ D, o2 k: ~4 r& j& s- N* q, I( t
RewriteRule ^/(.*)$ %1/$1
* ^& V1 B4 m# s4 qRewriteCond %{REQUEST_URI} ^/cgi-bin/+ V. @! ?9 _ U. F1 N: `$ j
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
; N2 C0 I, p& L; z0 RRewriteCond ${vhost:%1} ^(/.*)$5 Q4 g$ \. i% `/ S3 Q' \4 C
RewriteRule ^/(.*)$ %1/cgi-bin/$16 r4 [6 }5 M- n0 u% O
8 e6 k4 ^- Z, z2 E% d4 ^% k$ b7 c注意:vhost.map文件是域名和空间映像的文件,格式如下: & H. E, G: O6 ?+ Z
www.abc.com /vhostusr/www.abc.com
4 p& E/ H* y6 Y( Hwww.xyz.com /vhostuser/www.xyz.com* L% G1 n, ~! h4 g
www.cccbbbb.net /vhostuser/www.ccbbbb.net c( a6 S# t: i0 t3 l7 {
.
! A& D; r4 T, s1 l( I S: {.6 X+ |4 `! a' l1 n3 w) k2 S8 Z
.3 Q" b4 W! r8 n$ n% g/ C. e
.
, N! O8 x" Y" D% n' P: F0 e(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
6 Y: Z' `8 b. K7 p5 y H# v0 O/ l第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
% @; j# e" I9 G. x$ b其实这个可以用php脚本来完成的,很简单的~~呵呵~~~4 h1 m8 W4 Q) E: N3 n* Z
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
6 K0 ]8 M3 ]' c5 i/ U==============================================
% h% J; d2 n) |方法二、
3 _% |0 k/ n8 b
1 L% L5 Y' b6 P4 `) G3 G( R1 D8 U
* P9 o* ]; u i: K6 P6 r: erewriteengine on9 i3 @1 M1 ~ z( X; z
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$- g) N# X) y* _. F5 ^ O
rewriterule ^(.+) %{HTTP_HOST}$1 [C]* W8 K: z$ E2 B# d* ?
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
; O, A: A2 T6 F6 G其他配置文件/ ~, x+ Y8 w1 @% f* K% ~3 s6 g# o
7 L& J! q1 Z; B$ I7 O. U7 w
接着在DNS中开设一个泛解析到对应的IP地址。! ]/ a K$ [: L) g) U2 h
就可以实现下面的方案。6 ?) [8 w/ l$ |9 ^5 ?9 d
k/ \8 [, q- v
域名:domain.com! G( b. n- x. _* m$ B9 `
绝对路径:/home/domain.com/
* q( m3 |! L/ X$ Twww.domain.com 自动解析到 /home/domain.com/www/
5 r0 ^5 R; r* P+ iabc.domain.com 自动解析到 /home/domain.com/abc/
' l+ {' t- A! X" I( R$ d等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹7 x# M% P. S- r" j4 V8 q
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|