  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14247
- 金币
- 2414
- 威望
- 1647
- 贡献
- 1362
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:. _ A% h* V- O1 |4 d9 e6 \- H9 t
) ^( ]! ?( ^+ X* l! S+ N
RewriteEngine on7 s/ d% Y4 G7 H$ ? B6 l
RewriteMap lowercase int:tolower
- x" G! q) p* t' A0 @4 B8 J, qRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
6 T3 Q" P! ~% \" Y% V7 tRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$/ R, g1 T5 A5 N ?' s" d' U
RewriteCond ${vhost:%1} ^(/.*)$
% l8 R% b/ e" VRewriteRule ^/(.*)$ %1/$13 b! g: P. a/ k
& P a& w3 w \( {" Y7 V& {6 j3 X4 D. f# b' `* C
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
_5 _$ S6 `/ S. ^然后,在这个所在路径的目录下创建一个文件: vhost.map6 L8 q4 }; E; W$ Y/ k
内容为:3 D" R. y: g9 [: Q5 I! {/ w, h
) t8 |1 ?, L& a3 F) Rwww.domain.com /usr/local/www/data-dist/domain( W, [8 W' j0 I! M f' [, ^2 e/ @
bbs.domain.com /usr/local/www/data-dist/bbs1 f% z x2 D1 u. W/ B5 D
anyname.domain.com /usr/local/www/data-dist/anyname: Z# U) [! k/ J) C I1 X
' k _) C% E0 Y6 i以上部分都是:” 域名+空格+绝对路径” 的形式。
: r5 g5 o$ G5 W
6 ~- z# v& b: C* m$ i3 r最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:' E& D+ c# v, |: u2 I7 x
domain , bbs , anyname 等等,理论上可以无限。
( Q1 C0 ^) ]+ O# t+ S( r, F. k3 W) B# r5 j. s& y& E5 d
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
v. x+ z D' l" {2 a( g) [7 [随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
7 @7 q) @# b5 m$ f2 a9 P- x0 L
) n2 r5 p3 ~ D第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
1 N. W1 ]2 X/ F- r, B: n0 q4 Y' h第二步:打配置文件尾部加上, ^& `# r+ F8 i j/ f
RewriteEngine on! o' I- ]) U+ l9 E' R
RewriteMap lowercase int:tolower
% O* W) ?! D& V9 N- W: s#定义映像文件& V7 W: C2 k0 }3 U$ ]6 U3 T& _
RewriteMap vhost txt:/apache/vhost/vhost.map7 W0 s0 q1 V6 f; I* Y! K
#处理变名
# A$ d+ a" g; U/ T" f, YRewriteCond %{REQUEST_URI} !^/icons/
! }: K7 z" v9 _RewriteCond %{REQUEST_URI} !^/cgi-bin/* J& j' w+ t4 m2 a8 T2 ~( s* R
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
+ U2 Q: u, Q' A+ w这里做基于文件的重新映射
2 I( L, Q+ J; r$ [RewriteCond ${vhost:%1} ^(/.*)$
1 F+ O% H' r: KRewriteRule ^/(.*)$ %1/$1* d- H u: X7 B( y! `' c7 I
RewriteCond %{REQUEST_URI} ^/cgi-bin/6 U1 }; A. T! e
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$9 ^" L O' e% |+ _& r' U0 a
RewriteCond ${vhost:%1} ^(/.*)$: _+ u! S) ^5 i6 u6 G
RewriteRule ^/(.*)$ %1/cgi-bin/$1; ^+ w& y0 M7 f
$ s v( R* B. C
注意:vhost.map文件是域名和空间映像的文件,格式如下:
& i1 A: Y8 Y- Z; kwww.abc.com /vhostusr/www.abc.com
# }; _1 g3 L: Mwww.xyz.com /vhostuser/www.xyz.com r/ x6 Y8 e: Z7 k. G, n
www.cccbbbb.net /vhostuser/www.ccbbbb.net! _5 Q4 C" O j6 N: U' `
.9 M( T* I2 K! n2 Z5 G- p
." A8 k* C0 ?5 T; x' v/ }
.
6 L" k7 H! X9 U1 L# }" D9 ] a.4 N- f7 u- I( M! c1 t( }
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)$ l, x+ p1 {! k6 p' ^
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
$ {7 F! W9 j. v7 v# ~0 @# j其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
) x. h+ N5 Y$ c u1 V- J注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~! K( p6 @$ {2 I! l, X( J# ]
==============================================
. H% z& m2 w& A; G, x% D, Y, K& e方法二、
: P F# v7 J9 r. x6 C9 H
( S4 o# A: k) I% u/ ~
6 N0 J6 Z2 A7 T/ L# grewriteengine on/ O$ C* V; y1 M: z( |0 l4 M
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$) ]1 A! G+ I. M! d/ ^; g1 j
rewriterule ^(.+) %{HTTP_HOST}$1 [C]2 ?# `- x! C2 n( n n7 g1 B7 L
rewriterule ([^.]+)\.域名\.com(.*) /$1$21 B+ B+ C, v2 l- m# b
其他配置文件
9 ^4 B; M) _0 C* B$ c: n. {4 p/ Z! T. L: @6 }8 c$ Z7 ?& a- Z
接着在DNS中开设一个泛解析到对应的IP地址。
8 w' h2 K- U1 ~6 a7 x( _* ^; L就可以实现下面的方案。- N2 B# o/ a+ [ D2 Y! k
7 M. Y" V- M7 c8 Z c9 Z% |/ Q域名:domain.com3 A8 U& ]( @8 d( L- U
绝对路径:/home/domain.com/
# ]& ^' ~2 M. `' Nwww.domain.com 自动解析到 /home/domain.com/www/
* N9 |. f7 c: o: U5 d& i. B5 labc.domain.com 自动解析到 /home/domain.com/abc/; v. x) N! \4 d6 P( T6 o5 d- f5 y
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
$ A$ v5 W6 Y1 B9 r6 U S1 j; x6 O直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|