返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
8 s' i$ v' U8 ~# I/ \) t. ^" ]9 G; R  ]4 k' e
RewriteEngine on: _* r  g# j5 n5 o3 A8 Q! }
RewriteMap lowercase int:tolower
" K+ H9 M  o" \! Z6 S/ ^RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
1 O% H' d& d; ^( P5 V% }( ZRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
. M" g) z' k$ G. ARewriteCond ${vhost:%1} ^(/.*)$
9 q6 t  L/ L- I, d- \6 a4 v5 `7 NRewriteRule ^/(.*)$ %1/$1
* K1 n; A. H" k% z0 G
) l% d/ H9 \9 C, k5 |! B! K3 i" `9 M2 d9 ]* ~" X
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
- y5 g; z9 j# s1 ^# e然后,在这个所在路径的目录下创建一个文件: vhost.map9 ]' T2 O# y8 [5 L) d( Z3 {7 y$ ^
内容为:4 J' \# p7 v: C! a) ~5 W' R& p$ z
3 f( P& Q0 q- P" N  ~- ^
www.domain.com /usr/local/www/data-dist/domain
, q) e) a% p( u( T% jbbs.domain.com /usr/local/www/data-dist/bbs
' w' Q, C$ ~2 O7 {. z6 Y1 hanyname.domain.com /usr/local/www/data-dist/anyname/ A0 }0 m( x1 A) _$ w  ?/ o% ^5 n, E

' l+ L; s: J4 d  V" |+ a以上部分都是:” 域名+空格+绝对路径” 的形式。
4 O  `. ~5 z- }: n# U* g0 {* R. K# [+ `' X. [" i  Z! w' V
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:$ I0 H  v* m' L; |
domain , bbs , anyname 等等,理论上可以无限。
+ J# ?4 M- }, O- r/ c+ N9 ~
+ T8 W; s! Y( a1 T这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以- M- B' R+ s/ M5 o& H  z' v0 H
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。/ ?: w4 V$ {/ o$ T4 E
- v' }3 I  f( h
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。1 u9 \: X) a6 P& J
第二步:打配置文件尾部加上
, l$ v, y7 k1 p" jRewriteEngine on
) a+ J& P, i5 m  h* c# n9 mRewriteMap lowercase int:tolower. Q, J; y  h' z" L7 G+ Z3 }
#定义映像文件
1 \: q# Y2 P# W- pRewriteMap vhost txt:/apache/vhost/vhost.map' T+ _/ t, @# _( \' H1 s# t
#处理变名- ?# R% e' V# O4 D0 B8 V  W. j
RewriteCond %{REQUEST_URI} !^/icons/* N% @- {5 t6 b* _7 j9 K
RewriteCond %{REQUEST_URI} !^/cgi-bin/
/ x8 O8 u: u0 e2 m3 k, jRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$6 `! G! _$ Q# D
这里做基于文件的重新映射7 c3 v4 u" e& ^6 w: {' f4 o
RewriteCond ${vhost:%1} ^(/.*)$
2 A! f# {2 S7 ~3 [+ gRewriteRule ^/(.*)$ %1/$1. S$ N" @3 C3 x6 I
RewriteCond %{REQUEST_URI} ^/cgi-bin/7 h' p4 B3 c* K8 l# _! P
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$& {# A% f9 R! {: ]
RewriteCond ${vhost:%1} ^(/.*)$( _5 A+ p1 m& u( H/ m: A' J; y- u
RewriteRule ^/(.*)$ %1/cgi-bin/$1
! U5 A, n8 G0 s5 {& I$ a% a1 n' B$ G' B- x$ b- Y7 q$ A
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
6 t; k& o. E4 ~5 [& zwww.abc.com /vhostusr/www.abc.com
2 z6 k* o: _5 Awww.xyz.com /vhostuser/www.xyz.com* ?1 J4 h; `9 e& n
www.cccbbbb.net /vhostuser/www.ccbbbb.net
( t8 L* r/ [3 v.) Y  D3 Q; j6 c1 T' h9 [$ b+ R
." c2 |- `* H) G2 I- w6 D. q. k& o
./ F! c( o3 E: u# P$ J( c
.: f5 V- {7 Q+ X; u
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)2 {3 j6 g( D6 V2 e1 ?3 n
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~: t3 y" F2 Q0 v* r
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
- }4 n0 h) `  l注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~; i0 x. i% G+ _0 A1 b9 j5 h
==============================================
0 u/ o  a) l5 U, P6 i+ d0 ^- @8 N# t/ ~方法二、3 z) Y% m$ q: }! t* e8 x; {

8 x5 \5 b9 h  ^4 D4 N, D5 E
7 y0 o  L  ]% z/ V$ }. jrewriteengine on3 E; r4 h5 o' P4 P' y" b' c
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
4 v7 g/ s2 Y+ f' L4 Vrewriterule ^(.+) %{HTTP_HOST}$1 [C]1 N$ l- h9 {: @6 G& i- }4 R4 b( K4 W
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
6 R) h5 J4 y, I- J7 v% m* l) C其他配置文件
/ t  `5 |( J  K/ j; o8 J
! M( H1 x# D. |7 A/ r4 Q6 M接着在DNS中开设一个泛解析到对应的IP地址。
( b8 }, S- Z9 v  |+ M就可以实现下面的方案。1 c" \5 z7 F3 J
7 ]' M$ r: v$ q
域名:domain.com
2 k. T8 A( e0 i2 f3 d! b9 ~绝对路径:/home/domain.com/8 S9 P; L) w% E9 M; s5 T: D
www.domain.com 自动解析到 /home/domain.com/www/# L9 K. [5 \9 v! F4 {5 k
abc.domain.com 自动解析到 /home/domain.com/abc/
! G' J3 @: m: s+ D等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
; U) m$ D- c' A6 n5 I$ ~$ g, Q直接建立子域名名称的文件夹即可使用。不需重启apache。

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