|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14389
- 金币
- 2480
- 威望
- 1647
- 贡献
- 1428
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:& J. B, o3 V& _1 J+ A: L# n
) ^- k% v% u+ a/ R. T! qRewriteEngine on5 a/ K* Q) `% @ S- P# ]
RewriteMap lowercase int:tolower# L4 {+ v4 r4 J# [' {: ~! c: w) A
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map! ?- V: |$ m- v- S& N$ {% M- q; L
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$# N+ e5 o- d$ q1 k+ ^1 [0 i3 H
RewriteCond ${vhost:%1} ^(/.*)$3 x+ S; s9 J. K5 p
RewriteRule ^/(.*)$ %1/$19 g2 I9 I- ^9 ?7 c4 ]
# a3 ^- f/ ?, A& ?- N3 y' U4 X
( u1 H0 P: }3 c- y; @
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。0 U$ J% g2 |) ]4 q- Z. p8 O6 d
然后,在这个所在路径的目录下创建一个文件: vhost.map5 q$ H0 `0 a3 A e
内容为:
' v1 n* ?5 a$ P% W, h' t, I
+ V% u2 s, t1 S* c$ {www.domain.com /usr/local/www/data-dist/domain
# C4 p8 s' L& b) `7 ]2 `7 C) w6 Jbbs.domain.com /usr/local/www/data-dist/bbs
0 r2 B: z2 V" D' g7 Janyname.domain.com /usr/local/www/data-dist/anyname, m& e1 P- f' e: K
+ s+ k* Q9 F! ~以上部分都是:” 域名+空格+绝对路径” 的形式。
5 d+ |. _6 C" a/ ~. O; _2 g
3 l) b2 H, f% C% \' f6 i7 X" s最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:0 B) G6 Q7 T* Y* {" A% k# \) s
domain , bbs , anyname 等等,理论上可以无限。. ]! k- T& V Z8 \$ m
$ k6 w: u/ Y5 b& R
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
- t2 j) B' L/ G5 C5 q6 [6 @& o随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。# q0 T7 s3 y% |
) D& I: M# ?- `+ W* i {) ]
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
$ G6 o3 |6 C& l( ^: r第二步:打配置文件尾部加上
- [2 z0 g# s8 Q! lRewriteEngine on$ q; h2 d! }. Y# Q$ j( M
RewriteMap lowercase int:tolower, L' i4 I! T5 q6 X: R2 U# G$ J
#定义映像文件
, f+ [- V* O9 n URewriteMap vhost txt:/apache/vhost/vhost.map. U* v: w6 p* m4 M
#处理变名
: u# R7 S" ^! A* kRewriteCond %{REQUEST_URI} !^/icons/
. e6 B/ q4 ~! {4 T! |+ ^RewriteCond %{REQUEST_URI} !^/cgi-bin/, N, Y @6 M% M+ C, ^
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$1 b$ U3 f* [5 j$ z, G5 W
这里做基于文件的重新映射
" ~$ m. m, i9 s7 ]- b( ^/ t9 E. l+ lRewriteCond ${vhost:%1} ^(/.*)$7 E6 T1 c {( P" _
RewriteRule ^/(.*)$ %1/$1
! J$ `& a0 k/ n- q7 B: n! x CRewriteCond %{REQUEST_URI} ^/cgi-bin/; P$ o9 y8 h" y
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
. b& i% L' j9 T& F! F, ARewriteCond ${vhost:%1} ^(/.*)$
$ k5 A& d$ Y r2 [ n: sRewriteRule ^/(.*)$ %1/cgi-bin/$1) i' E/ Y6 S# }2 g% J2 J
1 h9 _6 {7 u( O- q' |9 z注意:vhost.map文件是域名和空间映像的文件,格式如下:
$ _7 o7 i6 M1 A* l" cwww.abc.com /vhostusr/www.abc.com4 Q4 k1 o( I; [6 p. S' ~1 B
www.xyz.com /vhostuser/www.xyz.com" w( R( J5 Z; Q' Y
www.cccbbbb.net /vhostuser/www.ccbbbb.net
/ n! ]! K7 T$ \8 }7 }2 Y5 P.
; R. u; F. B2 _3 y2 M; O' ~1 I& y.
+ j! B3 G- C) k/ |* _: [2 w.
9 V5 N8 h; j G. Q' N- x* R9 w.
( s: V8 I: R/ E( _(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)$ ]) {" Q. |+ q
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~* z8 P N4 x: A B
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
9 \- N B @% Q& a0 X注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~5 v+ ]& @( k, o
==============================================" t* X% @& g3 f8 |3 F2 I0 U
方法二、1 g" f G) Y* T/ U
+ i( ` q* W7 d
6 E6 L6 S! s6 d0 S O+ c1 M& Lrewriteengine on1 g1 b* p( X/ o3 N O
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$$ l! A: |% @4 }/ H- ?3 E0 z
rewriterule ^(.+) %{HTTP_HOST}$1 [C]! c3 U1 m4 n6 R
rewriterule ([^.]+)\.域名\.com(.*) /$1$2. X' t3 D0 m8 S
其他配置文件
/ s. U3 v/ O/ s1 g$ R' y7 R! S! ^( }% M) `
接着在DNS中开设一个泛解析到对应的IP地址。
' S" K U" C* u' f- d就可以实现下面的方案。6 B) { x2 J: J& Y- m8 k" B
5 L8 c5 S& x" Z
域名:domain.com
1 Y: o3 Y3 I1 Y7 e绝对路径:/home/domain.com/
7 Z' O; f* l- p O2 vwww.domain.com 自动解析到 /home/domain.com/www/
6 f7 D9 u' B2 K" s& a7 w$ g) gabc.domain.com 自动解析到 /home/domain.com/abc/
; v/ L5 A5 g/ I( U& s9 w等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
T7 h6 a! s3 B- Y直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|