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

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:& T& e. v. |  Z; P  R" s
: D4 I. C$ A2 N% \& m
RewriteEngine on
8 X$ r5 U0 U8 TRewriteMap lowercase int:tolower
" w9 {# E4 u/ s: R* X6 I2 n% J- vRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
& f5 [$ e& D0 p0 LRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$% X2 }: S0 D$ [
RewriteCond ${vhost:%1} ^(/.*)$
* I5 R& \/ E- g0 [4 x5 ?, kRewriteRule ^/(.*)$ %1/$1
+ U7 g% k1 U5 j. j4 |( `, K1 w" J  P# Y. d
3 ?) Y: F: j0 m; L+ L
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
, C8 r- d$ ~, f1 X; \然后,在这个所在路径的目录下创建一个文件: vhost.map
9 h7 ^3 I$ L4 r3 f1 c内容为:! U- T9 B4 K' c! b6 R

5 d" y/ |6 F' L5 D8 W9 V5 Zwww.domain.com /usr/local/www/data-dist/domain
, o& V# ]  v2 b+ H: n. P; qbbs.domain.com /usr/local/www/data-dist/bbs7 C& p0 [' ?& ^7 u& {
anyname.domain.com /usr/local/www/data-dist/anyname
$ ]; R9 `- x; b( n: p( Z9 \- V  Y
以上部分都是:” 域名+空格+绝对路径” 的形式。- \( J5 W+ `  }9 T
( g* S; r5 c, b; P. U6 d
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
: a% R( G* H9 n' Cdomain , bbs , anyname 等等,理论上可以无限。$ d8 u0 v. }! j1 I3 H- L' s
; I% K/ J  `% G/ D" t, A  K9 d
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
4 }' B9 v- f* n5 l随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
- N5 N; V$ \: ]9 }6 Z
, d1 U# n5 X! I7 V" B第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。% V% v8 Z( O3 r9 e( b! G0 a
第二步:打配置文件尾部加上! _% c# u7 K6 B. R5 P1 H
RewriteEngine on+ y7 h+ g: n# A; L7 t+ s
RewriteMap lowercase int:tolower$ u" [6 T/ m4 f; ~( i! V
#定义映像文件
. W, ?  A  B& |RewriteMap vhost txt:/apache/vhost/vhost.map
3 y& b  S3 U5 w$ v4 w#处理变名! C8 }7 h5 s  F" H) l
RewriteCond %{REQUEST_URI} !^/icons/
4 a. A% R9 o" n* X! |. sRewriteCond %{REQUEST_URI} !^/cgi-bin/" Q) ?, P1 l2 ]' P
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$# n4 L6 {9 C9 q8 E3 ^& T4 N  }
这里做基于文件的重新映射
# ?$ e5 x8 k' n# W, qRewriteCond ${vhost:%1} ^(/.*)$
7 D+ G, c% [( v4 ?& WRewriteRule ^/(.*)$ %1/$1
1 \; }4 a& H+ e, n/ ^, }RewriteCond %{REQUEST_URI} ^/cgi-bin/* `  H" J: h% h. W
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$% c- w6 X6 X& p, a* K
RewriteCond ${vhost:%1} ^(/.*)$0 l" A& a2 C. L
RewriteRule ^/(.*)$ %1/cgi-bin/$1
0 e- g7 E; f! X! e, l( K; k2 H) w, E( m9 A2 _
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
5 j$ j, h% B  Z! Z9 H3 Owww.abc.com /vhostusr/www.abc.com8 z  G+ M/ n0 H+ o4 A8 r% ^' I3 G- w
www.xyz.com /vhostuser/www.xyz.com# e2 f+ l+ ^( B6 W
www.cccbbbb.net /vhostuser/www.ccbbbb.net( ~; q2 e0 B" \$ c$ e3 d. G2 P' ~
.
: d! v  r' ~/ |7 x.! ?3 U) @7 z0 b) ]. ?6 S  m! U
.
! r8 p. a0 D! ^.; C7 v7 k0 t! ^0 X( A
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
  P- k6 \& F9 T0 j# `  G第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
; x2 C* p. S+ v) s其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
* Y1 a, Z2 j7 b. L注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~0 G+ o6 t7 ?4 }
==============================================
5 J5 l( R, P, P, \# P方法二、: c" p2 Y! z$ l, F: h
7 o% U  S3 U& z6 y# b# \+ `9 T

* p3 Z. I( S+ B& L) Z1 g" f' A5 brewriteengine on
) o; ^& T2 @6 L4 X' G7 Brewritecond %{HTTP_HOST} [^.]+\.域名\.com$
1 m% m+ M) O# S( e6 H/ N( f' H& j- n( hrewriterule ^(.+) %{HTTP_HOST}$1 [C]
3 r& r" D- r+ Nrewriterule ([^.]+)\.域名\.com(.*) /$1$2
6 |% X1 {6 x% X5 C其他配置文件
3 j3 X( O0 f. }) N  i4 l, c1 K# g1 N
接着在DNS中开设一个泛解析到对应的IP地址。
9 }8 C! S( L. f. ~就可以实现下面的方案。8 }- d  ^& j0 l; y  j

; Y/ o* i% e# r( H) Z5 ]域名:domain.com
+ L# w& M4 K# a绝对路径:/home/domain.com/
: M( g4 m9 d( \% O% G; T0 U$ @www.domain.com 自动解析到 /home/domain.com/www/' ~% J  O, B0 p" I
abc.domain.com 自动解析到 /home/domain.com/abc/  a% P4 @" e& K7 d
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
% [. |) F9 l; w- W: ^2 R直接建立子域名名称的文件夹即可使用。不需重启apache。

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