  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14247
- 金币
- 2414
- 威望
- 1647
- 贡献
- 1362
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:6 f; h5 X6 \6 b! j
6 Q4 D7 O, ^3 ^" J, C( t3 h
RewriteEngine on0 j* S( d: o6 c' H$ P6 o# E% W
RewriteMap lowercase int:tolower' a& s: ~1 W: ?5 f) h6 C
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
9 @9 z" ]8 M3 @( ?RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
7 t+ h0 }5 S! Q7 q% G" ]# nRewriteCond ${vhost:%1} ^(/.*)$/ }& h& c* Q' p3 B% |0 x1 _
RewriteRule ^/(.*)$ %1/$1
! {- w$ h1 u3 q. L3 }
( L3 x( j; B, }8 y* I- h1 o2 B( y/ E) |
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
8 C! y; z3 ?8 o/ D# B, ^然后,在这个所在路径的目录下创建一个文件: vhost.map
" Q3 p' @( E4 s6 D7 r内容为:7 A7 m- Q7 ?1 ~% d- I
. _8 c$ r* V5 J' Y" ^8 wwww.domain.com /usr/local/www/data-dist/domain: I2 l2 @) f8 W7 |& m+ y
bbs.domain.com /usr/local/www/data-dist/bbs/ h8 T7 I6 @5 R: B) e A2 ?
anyname.domain.com /usr/local/www/data-dist/anyname
! ~# W+ M) N1 ?$ u* D2 R( X! H; R3 r$ p1 \) C
以上部分都是:” 域名+空格+绝对路径” 的形式。
# N, n$ H( K' t7 h% K7 u2 V6 _0 X$ o$ @# u0 H5 A
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
7 o6 S0 l) T1 _4 m& Wdomain , bbs , anyname 等等,理论上可以无限。& L! u$ W% Y0 g/ }, ~9 G% I
* q" b8 ]: K n: d, @: A: I1 h" ^& \& t
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以7 g+ `9 E, ]- d# `( L
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。$ S* `! f8 T; K
1 U. f" N6 @1 a9 d) R5 `2 ~
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
: g9 [( q2 h1 j+ d第二步:打配置文件尾部加上
# T9 }" k8 @& ^) Z9 ~RewriteEngine on
5 i, K+ D6 ]7 k% U* ]7 T5 vRewriteMap lowercase int:tolower) H& u) X6 Y5 c- W4 D
#定义映像文件5 F$ L' F$ W, M- S. j" H
RewriteMap vhost txt:/apache/vhost/vhost.map
1 O4 v# r. P- P/ D Y% {#处理变名
) f+ T% t( H& ERewriteCond %{REQUEST_URI} !^/icons/) D+ r' s( N$ C0 O/ u+ H
RewriteCond %{REQUEST_URI} !^/cgi-bin/$ y+ k3 }7 h' |8 `. K R$ @
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$2 T- D; G5 j H( {
这里做基于文件的重新映射
6 v& d( G) i! M; @, b+ T ?2 lRewriteCond ${vhost:%1} ^(/.*)$) T* L$ o) `& C( G1 _
RewriteRule ^/(.*)$ %1/$1/ o: @! J+ @" p9 O
RewriteCond %{REQUEST_URI} ^/cgi-bin/
5 v8 z# X1 B- A3 @; \RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
0 A4 ?5 Y4 k# C# y$ ARewriteCond ${vhost:%1} ^(/.*)$1 T' e5 c0 v0 ^* r. V% C
RewriteRule ^/(.*)$ %1/cgi-bin/$1
$ M7 ~: v* \! I1 w ?8 T5 ~* |, i/ @3 _
注意:vhost.map文件是域名和空间映像的文件,格式如下:
, Q s0 B2 v3 ]1 Hwww.abc.com /vhostusr/www.abc.com
b+ M% c" Z; I' |4 P8 a) R* twww.xyz.com /vhostuser/www.xyz.com
; L2 I0 O# X# P3 C6 rwww.cccbbbb.net /vhostuser/www.ccbbbb.net
0 q- m# V2 [. l" n. P7 s+ S. H.
2 ]0 t s1 s& S( J+ c( z., z: Q( e: b" `+ x% P& U, {
.0 B. M+ B' V( @% v
.; [& \; i* g2 I) L# ~- l
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)/ [2 Z* N- x# X" G4 o- S
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~, u' f4 M/ @' ^
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
9 T' k; F: C/ P& _ }# w. k注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
5 p K0 J) k2 T$ T+ G) I. I) E$ L==============================================
: N) I1 E2 J8 P# i8 l- `8 ~2 E方法二、
/ ^* E+ s- i( |! {/ x
, x4 d3 @# Q8 T) o. i9 Z7 C2 v1 V7 G* u1 ]
rewriteengine on! K5 F1 O! b- ^1 r
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$9 c% \. z4 |# h/ `
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
$ Q# I' R1 S% q& E1 e# crewriterule ([^.]+)\.域名\.com(.*) /$1$20 ]3 v( v4 C0 C4 Q( b! g
其他配置文件
" P" r6 X- w. d: W3 v2 D# p+ J, N; G$ @
3 z! B9 T5 i* f3 Q) s9 ^/ P8 W$ _接着在DNS中开设一个泛解析到对应的IP地址。
1 o% V7 a$ u* ]* [( [: X4 L; \就可以实现下面的方案。
! z6 X% C3 r& ?" Z+ N3 ?5 W8 t
$ O% j. y7 D( B" V" L* v# X- Q域名:domain.com
8 J9 A1 |! S- O+ {) F, e( \绝对路径:/home/domain.com/
# J" G+ o; F0 u- t. R9 lwww.domain.com 自动解析到 /home/domain.com/www// h9 C7 }. a3 K! u$ [
abc.domain.com 自动解析到 /home/domain.com/abc/; H- ^( L2 W, }9 |; L
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
8 h1 m1 y# b9 K7 l- U直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|