|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14441
- 金币
- 2506
- 威望
- 1647
- 贡献
- 1454
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:( G) [5 K) x9 a* M! v @8 \
. q# `* c1 S O3 F) T0 h9 |8 a
RewriteEngine on
1 ~; `6 l) w" N: L) h% }" ORewriteMap lowercase int:tolower
" {/ y y7 h! [% s" o1 P) ]* fRewriteMap vhost txt:/usr/local/etc/apache/vhost.map0 U' E8 }, w9 J1 t1 p* g
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
. n9 r1 s1 Y3 NRewriteCond ${vhost:%1} ^(/.*)$
5 j( C/ e/ B( r% vRewriteRule ^/(.*)$ %1/$1
9 f# d, ^4 ]' s2 W
3 J- Q$ g* f9 V6 s8 V
/ [/ |; @: Z8 N' E/ W* E8 c F |3 k其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。5 A C6 p2 g1 q: r; R+ ^) H, o5 \7 G; F
然后,在这个所在路径的目录下创建一个文件: vhost.map
+ u6 D+ N: `2 B) x0 i; H内容为:. S3 B: W# [/ ^
# R$ t9 ]# A, N5 W5 ^0 pwww.domain.com /usr/local/www/data-dist/domain
" n U6 ?; E5 f7 j( d, k% wbbs.domain.com /usr/local/www/data-dist/bbs! [9 M0 W: c4 A; e
anyname.domain.com /usr/local/www/data-dist/anyname5 @1 A @2 G: g' Q9 Z
' h. o* G p; w- `# A
以上部分都是:” 域名+空格+绝对路径” 的形式。
6 C+ o7 d P/ g8 w/ w; z( B! Y7 A0 }
+ t2 J4 V }" {. U$ z+ `8 H8 S最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录: s) |: v1 m7 E! u& i
domain , bbs , anyname 等等,理论上可以无限。4 D: Q) r8 w: H3 E6 v9 l) a
: _) Z- s2 h, E; ]这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
, |* h. N5 j+ x8 l/ c1 B随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
$ @- F& F1 l* E/ Z5 F5 J) f
5 H* y: n$ G$ s! V6 d) u- m: o第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
s' |! T- N! n# m( B第二步:打配置文件尾部加上% w* i2 X p; A8 x
RewriteEngine on$ [/ |9 w) ~0 H
RewriteMap lowercase int:tolower9 h _4 j" I) y5 T) m6 F& ?
#定义映像文件3 `5 `: w9 o0 @" G
RewriteMap vhost txt:/apache/vhost/vhost.map
% E- l; T5 [: D& L6 I; B9 G. m9 H#处理变名3 }( y* P3 S% X5 P9 e+ X4 E
RewriteCond %{REQUEST_URI} !^/icons/9 Q& C6 y2 G8 Q3 C. L
RewriteCond %{REQUEST_URI} !^/cgi-bin/
5 q: u0 b- Q9 t; z6 l+ w! FRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$1 K4 R# d9 b, C; i/ g
这里做基于文件的重新映射3 J. r9 A y( L f) |& k- f# e
RewriteCond ${vhost:%1} ^(/.*)$
1 K6 v* K! b/ R: N# m% |7 CRewriteRule ^/(.*)$ %1/$1
* j3 B% }- ~% k4 `; \$ NRewriteCond %{REQUEST_URI} ^/cgi-bin/) P2 F) @1 u y
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
! q* c6 w4 }1 Z4 J3 r5 z. C2 n# j! JRewriteCond ${vhost:%1} ^(/.*)$
: P U0 B \/ C2 D9 Z$ BRewriteRule ^/(.*)$ %1/cgi-bin/$1
/ E# D9 [! w7 r) S% y0 h0 r3 L
2 w. {' j2 U% j& s注意:vhost.map文件是域名和空间映像的文件,格式如下: , y2 ?9 I% v, |; @
www.abc.com /vhostusr/www.abc.com" v0 \% x% y; s& X# T
www.xyz.com /vhostuser/www.xyz.com
* G# r6 I; E1 @. Iwww.cccbbbb.net /vhostuser/www.ccbbbb.net% L# h6 R8 W9 x% Y7 o
.) `: b6 A8 e' E# ?* u9 u; U& W" j
.
2 Q* h V& E: G2 f9 ~7 A# [6 h.
8 T3 v) N/ @6 @.
5 b" D" q' F ]. c% u(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)+ N+ o* F( Z: Z7 Z# b6 \2 U# D
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
$ }, g7 r: o9 D其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
& j5 P1 i3 J% G# @! P1 e2 k- t注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
0 w+ c: H/ ~2 H==============================================: w6 S7 N8 k$ q2 x" F
方法二、4 M- c2 P1 `- T
$ i. J$ D0 h: S
r! C( W9 S' i: d+ R' t- o( |4 q2 frewriteengine on
/ c* [: `. b! C! T- Brewritecond %{HTTP_HOST} [^.]+\.域名\.com$
& U/ @/ }) S7 F. s3 Erewriterule ^(.+) %{HTTP_HOST}$1 [C]
) K- P# G1 v0 s; ?rewriterule ([^.]+)\.域名\.com(.*) /$1$2
. a! [7 S9 U- g% L1 {% W其他配置文件8 m7 b& q- }! m9 U
# ?) \# J3 Z1 H) ^0 x
接着在DNS中开设一个泛解析到对应的IP地址。" Z& z& e- d8 z
就可以实现下面的方案。+ C% {3 b* D# |& e/ @
" R4 }5 Y; B4 Q
域名:domain.com* Y' d( q2 ]$ a& I9 {
绝对路径:/home/domain.com/, i O" c- n, O6 M6 c6 [
www.domain.com 自动解析到 /home/domain.com/www/# ]; t7 ?0 W& x9 D# b
abc.domain.com 自动解析到 /home/domain.com/abc/ L5 j. A" f- d8 x' E. Z* G
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
. A% h- S$ Y& L6 r4 a# R- E/ ?直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|