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

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
, K) P7 \8 b( ]  i
) T) u; @7 T% q% J* G5 DRewriteEngine on% ?0 g0 i. `* Q" c( u
RewriteMap lowercase int:tolower
% ^" {9 y8 D0 ~  xRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
/ Z. m' w, h  m: Z( `7 k8 |$ xRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
. x% H9 }  W5 D8 ^RewriteCond ${vhost:%1} ^(/.*)$! L9 y, w0 q# O! o& n' ^
RewriteRule ^/(.*)$ %1/$1
8 o$ ~- q: s- T
9 ?# n) Y4 n: j- J8 f; `
, m6 b* r' r1 o0 s) u1 ?1 q& S其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
2 t! D5 P; U$ X$ q/ I然后,在这个所在路径的目录下创建一个文件: vhost.map
. B; l" ~3 a( N* ]! P5 }内容为:
! a: G0 U0 ^) P! v
2 H$ q! }) ?" Uwww.domain.com /usr/local/www/data-dist/domain
3 P% C5 N" ~" ~5 _bbs.domain.com /usr/local/www/data-dist/bbs7 G. Y$ ^/ e: J, ~; E( T' K
anyname.domain.com /usr/local/www/data-dist/anyname
' J: a( b/ x. N; |. D; P
0 I; {% m$ H6 `. N- A- b3 s" f, l以上部分都是:” 域名+空格+绝对路径” 的形式。9 A: k9 V) s, Y- ^$ A, q

( |9 W( \, g: `7 [4 X& j最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
4 L! }" D& _6 \/ b% _: Z* Edomain , bbs , anyname 等等,理论上可以无限。: c$ v) ?5 x5 I

( Y! a" Q. H, S- F这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
8 l& f1 G& P  V. @* d  J3 z6 ^0 E随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
5 B) _4 x1 N9 V& L7 H
9 N+ Q, Q$ S3 A; g7 m% K第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
2 z/ ]6 O( s% C, Z, n第二步:打配置文件尾部加上
5 `* B' {3 E) n& x0 ~0 _RewriteEngine on( I1 K8 |0 m9 v% {5 A$ u5 b
RewriteMap lowercase int:tolower2 G8 V: m: z5 Z1 o+ P1 R% [/ G6 F
#定义映像文件) [, m' {, r4 m
RewriteMap vhost txt:/apache/vhost/vhost.map
& F5 s, N, ]( j# ?3 D#处理变名
# c$ t8 q$ B% }/ r$ R! f3 y( xRewriteCond %{REQUEST_URI} !^/icons/4 c4 @# {, g: C* G
RewriteCond %{REQUEST_URI} !^/cgi-bin/9 H% T0 ]  V/ a6 U$ M+ B
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$5 y0 w5 p) d/ r' ^
这里做基于文件的重新映射
. t* |7 i7 U$ I+ o( g! C0 R5 R4 uRewriteCond ${vhost:%1} ^(/.*)$
. z' _/ @" e$ K1 WRewriteRule ^/(.*)$ %1/$1
, J! d$ X: y& ]$ C5 z1 yRewriteCond %{REQUEST_URI} ^/cgi-bin/
) e4 n/ m" v4 h$ g. c; {2 dRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
' E# e* v& F$ I7 m- ^8 j" CRewriteCond ${vhost:%1} ^(/.*)$+ J+ F) \4 y: o# R9 L" ^
RewriteRule ^/(.*)$ %1/cgi-bin/$1
( d. l, d# {1 A, k
3 }7 m. B9 O! V* E! Z  X注意:vhost.map文件是域名和空间映像的文件,格式如下: 0 D6 Z4 \7 L; Q4 v9 X1 x+ q
www.abc.com /vhostusr/www.abc.com9 A5 p9 `9 O6 k* p, F
www.xyz.com /vhostuser/www.xyz.com
! S! V" Y2 k9 y9 w& a5 [  Y) mwww.cccbbbb.net /vhostuser/www.ccbbbb.net( C4 l. `0 W7 N7 g
.
6 \4 r# ~1 A1 w) r3 F.1 X$ Y- y) b0 q  J8 q; Z7 L6 }
.1 j+ }3 \, ~( N0 T0 b+ L
.& b, b" L/ z' o7 I4 G
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
+ Z+ c3 Z5 C$ T+ d$ Z第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
' {# t) Q5 A2 \其实这个可以用php脚本来完成的,很简单的~~呵呵~~~" U& W* @8 i; @0 s7 ^, q
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
1 x, @" s8 d9 `8 g* r2 G. K1 E" @1 Z==============================================
7 n% D9 B5 c% W! W方法二、/ y6 h$ n% i5 G0 S7 f! L  u

1 A9 o  n/ R9 b# f
/ S& D' K% N3 W3 Q0 g, j/ ]rewriteengine on* v* @" F+ L* _1 K- F6 W
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
1 b" v7 [3 `$ J$ _rewriterule ^(.+) %{HTTP_HOST}$1 [C]% Z0 K; I( a2 ~! W
rewriterule ([^.]+)\.域名\.com(.*) /$1$2$ _8 _$ q5 J( Y+ Q' }
其他配置文件
" I) s( w- [7 ~! W/ E1 i5 U( D* l. N8 f. |& ?. n4 P/ h
接着在DNS中开设一个泛解析到对应的IP地址。
, [( U  ]% W2 @0 d" b: Q就可以实现下面的方案。
" D5 R, a( E5 G; Y" W6 {) |$ s2 y7 E% b! w
域名:domain.com
8 ?  C) l& O$ S: F3 U; f绝对路径:/home/domain.com/+ q0 S7 l# l1 A4 n
www.domain.com 自动解析到 /home/domain.com/www/
2 X! ]0 ^. K, C; [9 q" dabc.domain.com 自动解析到 /home/domain.com/abc/& I+ I6 \9 P( m. W+ z7 I
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
5 A# l7 k! m  G/ {0 ?) u直接建立子域名名称的文件夹即可使用。不需重启apache。

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