  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14171
- 金币
- 2376
- 威望
- 1647
- 贡献
- 1324
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
; U3 u. ^) }$ b$ {5 e; ^8 @+ I& F6 b. `. P3 G D
RewriteEngine on1 |1 J; k0 Y: M. S* E
RewriteMap lowercase int:tolower
3 Z* ]$ q4 W8 i+ {RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
) D( O6 v+ n4 h, ]) MRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
- S" `" B, j& i+ Z4 @3 iRewriteCond ${vhost:%1} ^(/.*)$
- D2 [/ p! _0 ARewriteRule ^/(.*)$ %1/$1
4 W+ Y- J$ T% J5 K& |
" @ [/ O2 ~; N% P
]$ h. Q$ H3 `8 ^( }其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。7 u& ~" K+ M" T9 L5 V b9 [
然后,在这个所在路径的目录下创建一个文件: vhost.map5 k9 {7 J* F [5 K' z) h3 E s
内容为:( j' k) P- R/ }" H
3 x1 l$ V6 S* R8 j/ _www.domain.com /usr/local/www/data-dist/domain
; z4 g7 ]+ o/ b+ P {$ E0 c; @* a0 Ibbs.domain.com /usr/local/www/data-dist/bbs( V0 f1 C8 R; J5 K7 |8 B {' r
anyname.domain.com /usr/local/www/data-dist/anyname
6 O& D9 U. L' A+ e2 F% K; a
' H9 N3 V; r8 X以上部分都是:” 域名+空格+绝对路径” 的形式。
0 W* q2 t& X* i( t6 K( _1 {' Z1 p( I2 _! ^( W, e; y# ?0 D. t b8 D
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
+ C- h9 t% f ^domain , bbs , anyname 等等,理论上可以无限。4 E5 r3 E% Z- X8 v! @ t5 {0 e
5 s6 l# v `. g$ e/ f1 H) ]
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
. r- v. @) A7 F" ^随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。1 `6 f6 F, M$ s) ?; c
7 A/ K) |( F& W3 L' G第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
4 Z2 M$ b& m$ ]6 n: X第二步:打配置文件尾部加上
$ e- N* x% R. I( L6 BRewriteEngine on
, q( Y1 a5 M9 r# p+ ~' r0 ^3 d1 cRewriteMap lowercase int:tolower# x% M" }. B$ C5 k# R1 p
#定义映像文件) ]0 G& c) w6 G* G
RewriteMap vhost txt:/apache/vhost/vhost.map
) s( g( z7 L5 h2 J! s6 V- b#处理变名+ Z& j S( D! @* G8 k9 I9 v3 m
RewriteCond %{REQUEST_URI} !^/icons/' v2 }8 M, }$ X5 z. H3 B) A& M
RewriteCond %{REQUEST_URI} !^/cgi-bin/! j3 l$ C5 J9 E$ G9 j6 }3 c
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$2 A2 D; t6 Z7 t$ S t8 |
这里做基于文件的重新映射& U0 S* I; w- P* R0 h
RewriteCond ${vhost:%1} ^(/.*)$7 }, X) W: u( h
RewriteRule ^/(.*)$ %1/$1
* t T6 [1 z$ }) RRewriteCond %{REQUEST_URI} ^/cgi-bin/; O8 d( D6 q! s/ _! S- I D. S
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$, j9 I- ?7 w4 `: M+ r" i: s, g
RewriteCond ${vhost:%1} ^(/.*)$6 s8 Q+ m: g' `+ {
RewriteRule ^/(.*)$ %1/cgi-bin/$1& v- D/ l3 W- Y5 W
/ t( ?' N% [' k# N! p& _% O1 _
注意:vhost.map文件是域名和空间映像的文件,格式如下:
$ `. ~2 i/ ^* \8 I: z' D5 cwww.abc.com /vhostusr/www.abc.com: A) J! U% F( M; b+ Y
www.xyz.com /vhostuser/www.xyz.com: c/ R3 c: `6 D9 O4 a9 T
www.cccbbbb.net /vhostuser/www.ccbbbb.net1 L4 j |4 g" i& {2 {2 {
.
2 \( c6 F, c8 d8 t5 I." w6 }7 X9 ?9 ^ i i- S5 j
.
+ w, E- ]! O% ` Y1 O.) d1 |: }4 Y8 O% s% r) v
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
/ Z/ P3 W1 r5 ?8 N% \- h第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
! J4 J' F* W1 L) D其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
3 b) s% w4 g8 b- R7 X* y注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~ ~, {3 ]4 L& K/ }& b" _2 ]. \- M+ _
==============================================5 i! J/ J n' N/ `7 G D
方法二、# d) V% [6 N* U
+ l3 B. y+ n* X# O& c; b; N1 h/ t- b) w0 Q
rewriteengine on! Z0 [$ {" v |% E7 G, b5 i
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
# {8 {/ L# {/ G$ G+ prewriterule ^(.+) %{HTTP_HOST}$1 [C], @. v- T6 V: W6 }0 O( e- u
rewriterule ([^.]+)\.域名\.com(.*) /$1$2' {$ v5 G& w$ Z& Q1 |2 _) L _- ~' I
其他配置文件
- X4 J0 H% s0 ^4 {9 P* y4 z& W$ ?) O
接着在DNS中开设一个泛解析到对应的IP地址。' k* w; n' N7 j3 ^ z) n* U
就可以实现下面的方案。
- K* ~' J0 ?2 N a* a4 [
7 ]1 R* P7 t: `$ _0 m/ W& V# Q域名:domain.com
: _: h0 W+ y2 k' Z. ]' G5 W绝对路径:/home/domain.com/9 E7 i/ Y+ J1 B5 C
www.domain.com 自动解析到 /home/domain.com/www/; g" f' G0 _3 y: u& U; g" D
abc.domain.com 自动解析到 /home/domain.com/abc/
/ r/ E& k5 |& s% O0 E7 O等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
" ~/ C/ N8 u0 Q) A" a7 G' ~直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|