  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14171
- 金币
- 2376
- 威望
- 1647
- 贡献
- 1324
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:! {6 v3 Y; e2 E V# U' \) x
* i8 S) ~1 ^$ i$ K$ @( N0 f# N
RewriteEngine on
: L7 u% B( s8 S1 GRewriteMap lowercase int:tolower4 _7 r+ ?/ g$ B! D
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map. v6 ~+ \3 H# L2 J% x! g* c0 E, |
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$7 r) j- W' ^& l8 D: K- \6 U
RewriteCond ${vhost:%1} ^(/.*)$
* G% k M8 P- W+ A* A+ vRewriteRule ^/(.*)$ %1/$14 Y: b, h0 N/ V5 y3 U& O( z
( B, k O$ @; n5 @2 ] B3 G$ w4 U2 V2 O0 x8 }* M+ [
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。2 B& w5 {0 g) P+ y
然后,在这个所在路径的目录下创建一个文件: vhost.map' j; {2 a9 P, E* l" a! y; ^
内容为:
4 i% y6 k" g% X* h: d) z% y
) F* ?% f7 s8 r; y( mwww.domain.com /usr/local/www/data-dist/domain; f: O# J- E* A
bbs.domain.com /usr/local/www/data-dist/bbs& M0 X5 E1 t8 i, L9 r d# T
anyname.domain.com /usr/local/www/data-dist/anyname- X' T! {" T& W9 K7 t" b( T
, A. W( z7 |! _以上部分都是:” 域名+空格+绝对路径” 的形式。. e# v0 v' G4 v9 S2 L
9 |6 z2 F3 `( p
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
; L9 o* W6 y& N* odomain , bbs , anyname 等等,理论上可以无限。* I7 v- X- a! z
/ ?7 U1 _, u- s
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
2 z" Q2 D# i* h z- w随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
' ~& ?5 w/ C& D t3 J0 z% U' v% P0 G5 q* I0 C2 F
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
2 v+ d- l6 V0 {. t第二步:打配置文件尾部加上
+ v/ `7 G: E/ z$ }8 g9 Z Y2 k, TRewriteEngine on0 r3 V: R( o" _: \3 t
RewriteMap lowercase int:tolower: f* S$ r, D& T5 d. T. N1 [' f) V
#定义映像文件4 t; u2 b# \2 ~* E" h4 p' s( ]
RewriteMap vhost txt:/apache/vhost/vhost.map# G; k/ f4 m6 m" x- j# G. L0 m
#处理变名% S3 M: g4 o# |% g9 f& P$ T6 L
RewriteCond %{REQUEST_URI} !^/icons/
% s6 V5 Y* T! P, Z4 [2 S4 c& HRewriteCond %{REQUEST_URI} !^/cgi-bin/0 C2 K6 @( O, U6 W8 w C- z
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$6 W( ^! _( c, V8 N4 G+ E
这里做基于文件的重新映射
$ ?7 h# Y4 W$ O# E! MRewriteCond ${vhost:%1} ^(/.*)$
5 D7 D" m( m0 ?5 jRewriteRule ^/(.*)$ %1/$1
2 g( }, N7 _3 G" M6 l: W3 PRewriteCond %{REQUEST_URI} ^/cgi-bin/$ H- V% i( \+ o7 v0 ~: t
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$% `& y d0 B/ G D; E! `7 B; ]
RewriteCond ${vhost:%1} ^(/.*)$
1 e0 C q4 ^6 [5 S" f4 NRewriteRule ^/(.*)$ %1/cgi-bin/$1
/ U4 p* c/ ]6 g/ d7 G5 X, `. u: d. h! C; T+ H- a/ O4 }
注意:vhost.map文件是域名和空间映像的文件,格式如下:
# S, |% l; g8 L, x0 d9 z4 J5 hwww.abc.com /vhostusr/www.abc.com! D- E% M# _! [* g
www.xyz.com /vhostuser/www.xyz.com
( {" h# L d3 s4 Vwww.cccbbbb.net /vhostuser/www.ccbbbb.net6 J# x9 _. P" }" Y: P- ~
.
) n8 N( M H8 v, Q$ z" i' i.
$ i* ^9 Z: ~. v& V.
4 a3 P% i" t" o3 `.8 ]" A' d; I0 E5 I, e* E" V$ y0 l
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)) C/ W- G) [# t2 A5 j. p
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
+ Z) h& l, X i其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
0 U9 v# n/ v' {; M: q注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
2 Y1 h: N; u, X" ]& v/ }$ h4 W% h==============================================0 k3 g+ P7 Y+ s, \" v9 D
方法二、
3 V+ C! h' f3 R+ c D7 N1 z3 Z) W( S) X
1 ~ s4 o' e% _; Urewriteengine on6 J0 Z! V+ T) Y6 Z# g$ G* N
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$* E0 H4 @, M: M0 v, W, Z4 ?+ I
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
$ S# \, d% p' c7 `: q D( i9 ^# A. Lrewriterule ([^.]+)\.域名\.com(.*) /$1$2
5 Y) _) e8 K& ?, j# w# x* d) C0 }其他配置文件
: c& u2 t9 R% \0 D
4 k& }# `: G3 n a接着在DNS中开设一个泛解析到对应的IP地址。. j1 ~4 C1 B1 }9 F; \6 o9 Y' C$ l
就可以实现下面的方案。6 q1 k0 H$ }# K1 y4 y
% f3 ?; d* f5 }; a- z
域名:domain.com5 V2 V* I" B0 b: k
绝对路径:/home/domain.com/# u! f) |( L( { I" x
www.domain.com 自动解析到 /home/domain.com/www/
5 U: n& g6 `! l4 G3 Pabc.domain.com 自动解析到 /home/domain.com/abc/
3 k, B/ q9 S1 w {* ^# M等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
K4 c/ u& d6 d+ q( A" p直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|