Board logo

标题: 独立主机Apache 配置二级域名 [打印本页]

作者: admin    时间: 2009-4-26 19:44     标题: 独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:3 j0 |# E( [  j# j1 _* I5 ~8 w
3 N" z2 A7 W3 P; H) Y* {* i) y9 {
RewriteEngine on
1 [, e& X, _# D: w7 z8 JRewriteMap lowercase int:tolower3 ^7 V1 J" g; J/ Y- ^% M3 H' [- a
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map7 c* h4 n& g" ]: b: g5 m. a
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$4 r) C& m8 ~" s' a: Y4 ^1 _
RewriteCond ${vhost:%1} ^(/.*)$
- ]4 u+ Z1 b) w4 H3 c/ q8 sRewriteRule ^/(.*)$ %1/$15 Y2 v1 S& c3 f: h5 O6 P
" }. A( N. w9 E: o7 E
3 ~% F9 Q) N/ d: @) m$ g+ w) b# X4 v
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
, d9 c7 W0 |1 L- h$ g# t! y然后,在这个所在路径的目录下创建一个文件: vhost.map
& _4 {3 S2 Y9 Z7 B+ r( n内容为:: o3 B% g# L* r3 d

' F  O4 a3 K1 @! S, ^: Z, ewww.domain.com /usr/local/www/data-dist/domain
' M$ A" F+ Z4 b- a4 O& pbbs.domain.com /usr/local/www/data-dist/bbs& s0 U5 s6 L5 M' N* i* g/ j
anyname.domain.com /usr/local/www/data-dist/anyname& u0 o* U0 q9 W. [
3 ~) T( p0 Q: Y, T
以上部分都是:” 域名+空格+绝对路径” 的形式。
- A1 V1 r. ]7 [5 T  Z$ E! S* A6 t' @; b; w  j
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:$ B1 x$ t$ A& h* R% o3 ]
domain , bbs , anyname 等等,理论上可以无限。8 p! t! U0 ]6 `3 q# @1 u5 {
8 P8 [% F- m1 P+ S) s* {% D
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以" U* y/ L2 `) ^! \; v! t% r' n" D
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
# ^; i0 }4 c* |' H( M  |
/ L$ {/ c" E0 u% A1 j- T" ~第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
+ ~9 s, z* o! t, O第二步:打配置文件尾部加上' c& e8 O3 n7 T, p( D( r
RewriteEngine on8 K6 g# ]* m; I/ D6 q
RewriteMap lowercase int:tolower1 c+ o" }# N, ^( b  f8 i
#定义映像文件
2 M% P7 v. Q* @1 }2 zRewriteMap vhost txt:/apache/vhost/vhost.map
, {! s9 E( q  B) t0 m* m* r#处理变名
, a/ \) I- C. Z3 R, B. ~5 B( |RewriteCond %{REQUEST_URI} !^/icons/  f2 U* f) T8 x) A
RewriteCond %{REQUEST_URI} !^/cgi-bin/
) o' D) o! {( R8 wRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
* {# |. i+ Y4 W( ]* b# G# Q* T这里做基于文件的重新映射
; ^7 O5 v3 W( C/ `+ FRewriteCond ${vhost:%1} ^(/.*)$
: S8 g" s$ N* L- s5 Z2 JRewriteRule ^/(.*)$ %1/$1
5 P; B0 a" \- T1 @5 [RewriteCond %{REQUEST_URI} ^/cgi-bin/
/ [& r7 W9 \9 M/ {& q9 ?5 m+ u( rRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
# |$ f+ h* T0 ?6 b( WRewriteCond ${vhost:%1} ^(/.*)$
# t$ p  v+ Q1 ]% j4 M% ZRewriteRule ^/(.*)$ %1/cgi-bin/$1' _0 V  h& g' j" g3 {& [( w: a
' x. L1 j! ?' Q+ |" H" I
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
4 w2 j% ~& Z0 E) _1 q$ K7 Owww.abc.com /vhostusr/www.abc.com
1 W: U5 g6 B3 o5 Zwww.xyz.com /vhostuser/www.xyz.com
8 S% Z0 E9 d& F1 n7 `www.cccbbbb.net /vhostuser/www.ccbbbb.net
3 b5 f% p2 s. f9 x: x3 ?.: X' ?" m/ B! f1 Y! v# |- U
.. m$ W3 S0 q5 T% v. Q, K
." c: M! j4 G0 ?& g3 U' J8 N' C
.( s' B/ K3 I% S5 u' t
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)1 ^& o$ O4 Q! f$ `9 W9 e; Q
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~$ d& g$ P. g! D) e1 @7 v
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
# A2 l) X% x% D3 v注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~' `% W3 a. ~  N. h" Q! b
==============================================" B7 e2 ~. U5 G0 B; {
方法二、
2 b; t& `5 Y8 H. {) e8 b( S% L3 B* U+ F) W# C) Q" c. j

& P1 w* Z5 @- mrewriteengine on
: T/ H, s) h4 E1 t% r* Xrewritecond %{HTTP_HOST} [^.]+\.域名\.com$6 w. _6 a9 K( J
rewriterule ^(.+) %{HTTP_HOST}$1 [C]7 z2 Q0 o5 H& Q$ \8 K/ W
rewriterule ([^.]+)\.域名\.com(.*) /$1$22 \" P  u7 N/ l" i0 K
其他配置文件
7 i4 ~  q0 n/ |4 N# h5 q/ v2 }0 s0 Z
: w5 T2 \+ @& M$ E/ R8 S' D接着在DNS中开设一个泛解析到对应的IP地址。) ]. p$ d5 J. r2 k( _# t3 y
就可以实现下面的方案。' n; n& K4 x/ W+ @. w9 R5 G
' a5 z8 A) ]0 t  O; r( d0 Z) T+ S6 M
域名:domain.com/ Q/ L+ v2 a4 w2 O$ \  ~' L
绝对路径:/home/domain.com/
* W3 B- Y: T9 Y& }5 n0 zwww.domain.com 自动解析到 /home/domain.com/www/9 X; E/ b" A  ?) y2 C$ _6 `3 M  F4 p
abc.domain.com 自动解析到 /home/domain.com/abc/
* J) s7 Q/ z+ D等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹. O' e: m$ P- p' d' J
直接建立子域名名称的文件夹即可使用。不需重启apache。




欢迎光临 捌玖网络工作室 (http://www.89w.org/) Powered by Discuz! 7.2