返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:& V% f+ ?8 O) O1 Q& H7 w" }

6 r6 U  q' k$ G, q6 i3 G4 l- JRewriteEngine on2 K& e' D! l7 a9 Q- k! U7 o
RewriteMap lowercase int:tolower; K0 v+ P- x+ A( G: u
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
) F) ], }4 b4 {RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
& ?& A7 P2 }/ ZRewriteCond ${vhost:%1} ^(/.*)$
0 v- I0 S/ P2 g" F5 xRewriteRule ^/(.*)$ %1/$12 e: L* _, Z3 w7 G

9 }9 g9 Y  ?' ^! Q5 @( J  P" b/ v; |) P2 V: J' j
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。' c. q' g) Z1 y2 p
然后,在这个所在路径的目录下创建一个文件: vhost.map8 V7 Q4 ?9 k5 o. o) {2 T$ J' L; r
内容为:
6 h7 V; G) |( ]" f7 E9 m% ?; w7 N- c
www.domain.com /usr/local/www/data-dist/domain
. a# S6 j* K1 y* J% Ybbs.domain.com /usr/local/www/data-dist/bbs
5 F& ], Q% {+ Q/ P* G* _6 Z- l" a: `anyname.domain.com /usr/local/www/data-dist/anyname: ^$ _) s3 Y9 f

- t% f2 l- c$ Z, r以上部分都是:” 域名+空格+绝对路径” 的形式。) e  W; ~; V& L( D) l

( [, X3 s8 Z# a% U1 l7 Z' G最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:! i3 i: @; Y5 m! y$ f( A. j; r
domain , bbs , anyname 等等,理论上可以无限。# {- X' ]) ^$ @) V9 W0 ]3 A" f
$ X' Z! r) c$ x
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以/ Z. N; R; Z, A9 g" @4 J
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
6 j$ Z! Q2 H0 F  o, m+ h0 N
$ {7 ?* a8 b8 q3 \4 K6 Y. Q第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。6 y* i! U- ^; z6 j, ^* V+ x
第二步:打配置文件尾部加上, ]0 \7 I7 n% U: i4 B
RewriteEngine on
; x; R. {" B6 Q5 c) i8 ~RewriteMap lowercase int:tolower* c. S  S. e9 ~2 r+ l: m; T: z, F
#定义映像文件
9 ?- Z- f" k) x; U! QRewriteMap vhost txt:/apache/vhost/vhost.map
9 Q: Q& ^/ \- r) p% e+ [#处理变名
7 r) ^# ^* f! n( b0 i4 ARewriteCond %{REQUEST_URI} !^/icons/
4 a) P3 X  i  y8 f! c3 iRewriteCond %{REQUEST_URI} !^/cgi-bin/
8 R7 X% m6 L2 w5 |0 n* [% @* {* cRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
/ L0 o' J% S6 ?0 p这里做基于文件的重新映射) m* Q( h( d- r5 T
RewriteCond ${vhost:%1} ^(/.*)$" U: a% ]1 X" w6 s: c
RewriteRule ^/(.*)$ %1/$1
' X7 e9 ^# Y5 g1 yRewriteCond %{REQUEST_URI} ^/cgi-bin/$ r, `- a6 N! p, ^0 n: R
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$' C' T2 X8 \# F5 q4 N# T
RewriteCond ${vhost:%1} ^(/.*)$8 k* {$ m% t: r
RewriteRule ^/(.*)$ %1/cgi-bin/$1
# B" }" I9 ]9 w2 R6 E- @% g$ t& R
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
" ?# R$ I2 U8 A9 O* jwww.abc.com /vhostusr/www.abc.com
! }2 F/ f" H, u& k6 \www.xyz.com /vhostuser/www.xyz.com
9 l7 e8 Z$ V; L8 C  Jwww.cccbbbb.net /vhostuser/www.ccbbbb.net1 A4 M0 F4 u" j3 X* n8 m( T
.
7 J0 @+ x& S% W1 o+ n* b./ S, m2 |5 _8 g9 G0 }
.
6 S% A  g0 f) o) B* V. T% N.0 @; g# y: Y9 e4 I- a: |, s9 O
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)! p" d7 B& N* K
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
# \+ P2 R& w: [2 N. ?. y5 r1 E其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
8 R2 k) {/ I7 g! N3 {* K9 r注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~( [' X, m' Z$ t" e7 h
==============================================& h4 P3 h: t  V
方法二、
9 d9 V9 F9 m7 T% J7 U9 Q$ G' S
) w0 Q; S% i* o. {! K
( E2 ~* T! y5 ?. Z0 q$ B9 nrewriteengine on  ?( p) |9 K) l/ r# a3 V; q
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
/ y% d8 e2 ?3 ^! X5 ~rewriterule ^(.+) %{HTTP_HOST}$1 [C]
! V  F6 \( E3 j6 }. n/ I, z5 c7 ~rewriterule ([^.]+)\.域名\.com(.*) /$1$2
3 S6 r; T  h! b  Y其他配置文件
# O/ W% D2 K* @; U! D; O1 ^- T8 u5 ^* ^# P, u9 u5 R. d
接着在DNS中开设一个泛解析到对应的IP地址。
& P1 g8 `5 e7 f% {0 P就可以实现下面的方案。# v5 [' {; A4 l, `# \- E# P

! [; ~4 `  |: l% _' ^% X域名:domain.com
/ u, |3 P% U' T1 n; Q8 X绝对路径:/home/domain.com/
- n) T& a$ K1 g& Y, n2 \5 {  [) ewww.domain.com 自动解析到 /home/domain.com/www/
1 w7 @0 d: }$ x' pabc.domain.com 自动解析到 /home/domain.com/abc/
" B9 W! R; c. V0 g5 B( L/ E/ |等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹1 B  P5 d1 c6 ]
直接建立子域名名称的文件夹即可使用。不需重启apache。

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