  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14191
- 金币
- 2386
- 威望
- 1647
- 贡献
- 1334
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:# D! I4 X' ]$ |" D& n
" Y% m% C4 t) \ J7 S
RewriteEngine on$ Q5 i3 s0 ^! K/ Y) ^; _. _
RewriteMap lowercase int:tolower
, I% W8 }; j7 [RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
# P4 [. r) Q: u# q7 c, |0 @RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$& A1 o; E0 \- A7 w# p
RewriteCond ${vhost:%1} ^(/.*)$; \$ e! _1 p2 a8 n. L7 l
RewriteRule ^/(.*)$ %1/$1
$ O. y3 H1 ~) ~. a. @
% b, ^( }/ ` U# L7 i0 R f: c8 j) b: A# a' y0 a
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
+ X# x4 u5 _( y" p然后,在这个所在路径的目录下创建一个文件: vhost.map
* u7 @& F, K$ r0 d: P* `; N内容为:
& N4 }) H+ W6 ?9 f. _9 }; n6 h4 I8 W; u: r
www.domain.com /usr/local/www/data-dist/domain
& O: T8 } [! Cbbs.domain.com /usr/local/www/data-dist/bbs
4 V @& B' H( ?" y) F( hanyname.domain.com /usr/local/www/data-dist/anyname
' W3 @- R0 S) R6 y. ~& c( s+ F7 F* q; U8 x+ p+ ~2 G! R$ \
以上部分都是:” 域名+空格+绝对路径” 的形式。# U u1 N# H4 R. p, d( `7 C4 O
N/ F! }. L( E最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:$ q0 \9 n4 i. k0 x; k
domain , bbs , anyname 等等,理论上可以无限。2 z* t6 K/ b0 T0 P
' \$ o) t% s& ?. L/ g- I# p
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
! K& c G* S& o N/ k5 X, a随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
! ]. |3 ?+ L' a" B/ M) f* ]! X& c+ r6 m
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。$ ~+ p- B7 @, j1 k8 F& s( G
第二步:打配置文件尾部加上
' Y$ Y! ?3 I' t2 ~2 r8 A p0 L4 _RewriteEngine on8 [% m( `) ^' l0 H9 b. q& {
RewriteMap lowercase int:tolower
2 W7 b4 l' J5 ~9 {& e9 H8 D* y+ D#定义映像文件1 B) z3 m6 n9 i7 h. G
RewriteMap vhost txt:/apache/vhost/vhost.map
/ f: |, C) x7 {* d+ a) n" r#处理变名
% ?6 Z' v5 I- ?9 @3 BRewriteCond %{REQUEST_URI} !^/icons/
! ?, K6 A" B9 e7 {% hRewriteCond %{REQUEST_URI} !^/cgi-bin/
& L5 Z" f- f" P, SRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
, s3 h' ?+ |$ C! W% k这里做基于文件的重新映射2 v: `0 l% s( e T) I
RewriteCond ${vhost:%1} ^(/.*)$
3 D% o+ m7 }- q" FRewriteRule ^/(.*)$ %1/$14 E& x% S9 A" B1 \, }/ V( D
RewriteCond %{REQUEST_URI} ^/cgi-bin/
$ `' Q- v* r! u: C, |! |5 IRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
1 Q" H4 l3 p- p% S1 TRewriteCond ${vhost:%1} ^(/.*)$+ i: _7 R. G1 K" S- \# C
RewriteRule ^/(.*)$ %1/cgi-bin/$1
$ Z c5 g5 ?( G. S) Q5 Y4 c. W9 {8 m- W0 j9 C; y/ K
注意:vhost.map文件是域名和空间映像的文件,格式如下: * w% S9 Z Q5 I# ]
www.abc.com /vhostusr/www.abc.com
; ]0 ~# j' H6 T/ D/ g7 c' swww.xyz.com /vhostuser/www.xyz.com$ g/ C) _$ K. c" X
www.cccbbbb.net /vhostuser/www.ccbbbb.net, n2 p! m" b# R: k& k' ]( S" Y" @0 G
.
: n" l# D6 V. {; h6 s.
3 i& `1 Q2 `2 y7 R.
( M4 ]& L* Q- P$ t! d.% K: Q& _* w* j) C6 v O @! G
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
/ l& Q0 {# V2 `/ i& H第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
! U0 J' ?: ]( \" P# Z其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
* y3 E; s a% {0 f8 f6 ]) {4 L注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
1 ~" K, n6 O& ^4 g6 M+ [==============================================' a+ {+ u3 u+ y% i- M
方法二、4 i9 F, C w$ F, L5 B7 c0 U# r
. z7 _6 K; f$ b0 m3 a+ F0 y
& L, i$ k* P1 s
rewriteengine on7 y/ W; b; v) T/ T/ X+ h
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
1 F5 r# n/ N5 p! v/ Trewriterule ^(.+) %{HTTP_HOST}$1 [C]
0 n7 S% H9 ~' x- N0 ?rewriterule ([^.]+)\.域名\.com(.*) /$1$2
3 S- r7 w1 Y6 q. v其他配置文件
0 \" V+ ~$ Q1 r2 N3 r# k, d8 w4 C# ?6 @, i
接着在DNS中开设一个泛解析到对应的IP地址。
; Y9 \5 @0 ?; ]4 D2 O/ n7 M就可以实现下面的方案。
% f4 B, Q w5 r' `7 {( u
4 B% B, Q( [9 v$ E5 W域名:domain.com
3 ]( [3 E4 h% Z# d0 G/ o k绝对路径:/home/domain.com/
: S! ^8 B8 C+ @3 L- {* cwww.domain.com 自动解析到 /home/domain.com/www/# m5 A( z5 P# R# l7 O( a
abc.domain.com 自动解析到 /home/domain.com/abc/
: M" n7 R8 C, p9 ^9 T5 x9 h2 l( Y等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
- B, B1 S9 |" [5 r直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|