获得本站免费赞助空间请点这里
返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:  K" P/ X$ n7 q% s) C- P7 x

2 D, R' c! i0 w4 BRewriteEngine on5 Y9 o& B$ m2 D; |
RewriteMap lowercase int:tolower4 @) [  s3 q$ W# M; L% ^4 I. z* r
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
% {/ @0 H& L+ T- }* y8 M; j( rRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
: Y% |' h1 T7 a; P% a3 pRewriteCond ${vhost:%1} ^(/.*)$
1 p* w# N. b1 W8 t$ oRewriteRule ^/(.*)$ %1/$1$ y& P% \9 t, F1 v+ ~) ]: U
5 _6 N+ Z- z3 [7 o+ H/ b

3 Z, L" `1 W/ S其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
8 p# F) m$ l9 C/ G( ?  V' X& j然后,在这个所在路径的目录下创建一个文件: vhost.map0 C  j( s2 V* n+ X) {
内容为:
7 `* i0 l* ?& n  ]3 A* ~$ w
0 i' N% ~: m6 Q  b0 B6 O% K5 Z+ G. Vwww.domain.com /usr/local/www/data-dist/domain
0 D% a7 ~! k# z& A' _0 dbbs.domain.com /usr/local/www/data-dist/bbs' Q) x: z9 b% ]& i" L0 \/ d- @5 i
anyname.domain.com /usr/local/www/data-dist/anyname$ q% s7 P8 G" z. _

6 p/ w' E2 [$ @5 a( o1 {以上部分都是:” 域名+空格+绝对路径” 的形式。6 E2 ~% m* A. m, s! k" i0 l% U
& k, U! i9 V% h5 p
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
" X3 l8 m7 P( n- O) pdomain , bbs , anyname 等等,理论上可以无限。5 X! j0 O( Q$ K0 @& [( x, g
& \2 L+ f/ q; X
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以; L$ s" p5 E. P& k1 _$ t
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
  }4 s, `2 U1 r+ s+ [9 Q  ^
! k: @$ U, x/ I3 @! `/ M2 L第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
7 v/ d, R  r3 m8 H) O" ^5 e第二步:打配置文件尾部加上
0 P: f- s$ I$ j7 Q6 n9 \2 ARewriteEngine on1 B$ V5 q3 M* X+ `; T+ p
RewriteMap lowercase int:tolower4 S3 D" K  m+ l; Z: d9 L. Q  R1 {( F# L0 U
#定义映像文件
5 e. |2 r. B2 L9 R$ Y9 vRewriteMap vhost txt:/apache/vhost/vhost.map4 a  J, @" S: A' G2 Z
#处理变名
1 V* v  [0 s8 k$ LRewriteCond %{REQUEST_URI} !^/icons/- r. u& t0 X/ B8 U3 |9 j
RewriteCond %{REQUEST_URI} !^/cgi-bin/# h! r' N, \; t* o$ w# w
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$5 X) R8 K6 H& ^9 d. D! B3 g
这里做基于文件的重新映射
* m. m& o' ~+ s  u- ^. cRewriteCond ${vhost:%1} ^(/.*)$6 ?$ i6 {) y. g. ^+ @
RewriteRule ^/(.*)$ %1/$1
. p. q6 r2 l" B4 P* y. xRewriteCond %{REQUEST_URI} ^/cgi-bin/& P/ t. C& j+ r0 J5 j, d
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
) B( j7 A8 S: T, b4 O* [RewriteCond ${vhost:%1} ^(/.*)$
9 _  a  G5 R1 i1 P0 x5 I7 V% QRewriteRule ^/(.*)$ %1/cgi-bin/$1
* {; `! _; K8 H& a! B1 V
3 Y' \8 N9 z5 H& L+ L* R. D+ {注意:vhost.map文件是域名和空间映像的文件,格式如下: 
* P- i) [3 Y  n2 k5 Hwww.abc.com /vhostusr/www.abc.com
$ k+ A# f6 t2 I4 E! W) |www.xyz.com /vhostuser/www.xyz.com5 A3 s* r# B/ h3 W, y2 K
www.cccbbbb.net /vhostuser/www.ccbbbb.net
1 _) x9 m. ^1 X& y8 G% d0 U# [2 q.
; P2 E' a; U! i- {.0 `+ H" m1 A, @# ]6 j5 Y. d) P
.
" `* `* _3 G+ Q, u" C# p.
( ]* z: P- F& h, `, h4 v( P. n(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
3 G/ A2 R3 h) U9 O第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
$ @' {- H3 y- k% |% L其实这个可以用php脚本来完成的,很简单的~~呵呵~~~; J' W3 Q3 ?: ]7 B, W, V6 a9 L
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
0 V# a( n1 |" e. A==============================================8 s7 _7 r" [2 l& j
方法二、" ]5 g( b( U  w! W; y7 Y) G  w
8 c6 Y5 {. x6 L( o# E

- ]/ d4 \1 I8 Y. B" j' ~) ~rewriteengine on
8 x' B+ @$ G& x& ?rewritecond %{HTTP_HOST} [^.]+\.域名\.com$. l. J7 L7 r) I' j/ u% t* d
rewriterule ^(.+) %{HTTP_HOST}$1 [C]" o$ w& w5 Z+ ]6 L/ C7 `$ M
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
+ E: Q& ?3 y% }1 Q: A$ _其他配置文件
( T, T7 E! f2 }- n/ B' u& |  ~
! M9 a4 k4 o- a2 W' a9 h1 H接着在DNS中开设一个泛解析到对应的IP地址。
* Q  e% {% O( F就可以实现下面的方案。
+ v& ^  s: g. g0 p' V6 y% Y& c2 M& R
5 P- J! c% k8 \! C域名:domain.com
1 M" F* M( u+ o! ^" q5 B绝对路径:/home/domain.com/$ y4 h9 `( d$ d+ Y: {
www.domain.com 自动解析到 /home/domain.com/www/* _: `% O; \; q. `% @
abc.domain.com 自动解析到 /home/domain.com/abc/
1 k) m' l; `5 }+ y& G2 K' z9 b等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹) B# V( d( }, C# ]
直接建立子域名名称的文件夹即可使用。不需重启apache。

返回列表
【捌玖网络】已经运行: