  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14247
- 金币
- 2414
- 威望
- 1647
- 贡献
- 1362
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
. y6 u+ ?6 d% A: g% o
2 v; x8 \; K3 F, ARewriteEngine on
' t) M( g% O, k; S# YRewriteMap lowercase int:tolower
7 J( t$ y0 i# ?8 [5 P4 BRewriteMap vhost txt:/usr/local/etc/apache/vhost.map* o& F/ \. n. ~& r% ]7 u: C
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$7 W" u: G5 y3 c% o7 ]
RewriteCond ${vhost:%1} ^(/.*)$
; ^ F( f$ |4 `RewriteRule ^/(.*)$ %1/$1( |& i! s3 g) N
5 ]% W( M* J5 J6 t( }3 F
8 z: ?) j w1 O其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。' p; f& l0 y$ R6 q! H7 D+ m
然后,在这个所在路径的目录下创建一个文件: vhost.map# l9 D- l1 Z/ Y0 w K
内容为:2 Z( c! U y. x) @) f$ ^
1 K$ K' a# n! b5 S
www.domain.com /usr/local/www/data-dist/domain, t$ G- r8 v3 d! ?5 @
bbs.domain.com /usr/local/www/data-dist/bbs
& S) ~0 t; O4 A" P! y0 Q; kanyname.domain.com /usr/local/www/data-dist/anyname
* B2 U$ E M! H3 t: q
# Y0 V6 W7 n( w5 X5 S& g以上部分都是:” 域名+空格+绝对路径” 的形式。
- r. d; s1 M8 e4 N. Z) o {4 G" W% ]- @3 H2 ?& x
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
; A8 I8 _" M7 R' p) E0 b# Rdomain , bbs , anyname 等等,理论上可以无限。
# l {/ ?6 ~ f; c" ]: F0 L0 L
2 P+ C1 o! |7 @$ k这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以2 Z% H% n/ E# Z5 P2 \
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。5 Z! w5 K% X2 g: u- F) _% j; @, ]
- X6 Y' U, ?3 D; r2 {6 Q3 N( i) ~& S
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。5 T( X# S1 Q5 y/ J& R, ]% k
第二步:打配置文件尾部加上
l2 R; V' A2 ?* vRewriteEngine on
0 {% Z. Q L' h% ?$ S# Y5 o7 kRewriteMap lowercase int:tolower8 ]" i$ V. R# F: y4 a
#定义映像文件; L# ?& f& O& O- X
RewriteMap vhost txt:/apache/vhost/vhost.map" X9 j0 Q- D2 x" z
#处理变名1 P3 L. L! x; B- g8 ]' j! L4 Q: q
RewriteCond %{REQUEST_URI} !^/icons/" K) i. {' z p- e' s
RewriteCond %{REQUEST_URI} !^/cgi-bin/
6 v* L% S* r, JRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
# Q0 L! P4 Q- |' Q4 M+ p3 u+ j+ q这里做基于文件的重新映射3 p% ~" p) N7 c; E: p8 A( p
RewriteCond ${vhost:%1} ^(/.*)$0 i0 k6 Z* N, i- y" F7 a3 I8 i
RewriteRule ^/(.*)$ %1/$1% y' j; ^# u5 Q' ~, V' W
RewriteCond %{REQUEST_URI} ^/cgi-bin/
5 y/ F. }7 h# ]. U& t/ N9 ~RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
8 b& G6 d% [4 @: @RewriteCond ${vhost:%1} ^(/.*)$
: Y4 C, ~; q9 F9 ^- [6 G+ x6 bRewriteRule ^/(.*)$ %1/cgi-bin/$1$ u& U. O8 Y4 }" E, \9 j' ~
* A) n, n6 V1 x
注意:vhost.map文件是域名和空间映像的文件,格式如下: & x2 a/ `7 J$ i- f& q
www.abc.com /vhostusr/www.abc.com
, ?9 B6 ~$ J& Q# l9 Rwww.xyz.com /vhostuser/www.xyz.com5 \0 |; d) x# z0 G' M
www.cccbbbb.net /vhostuser/www.ccbbbb.net" n) S( @9 Y' q
.
+ P0 `7 Y% O8 }0 ?; R. b0 K.+ {* F+ `/ s4 ^; A
.
& p1 g/ ^3 C$ e. e.* A, V, Q, V2 S& k3 z" Q9 Y
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
; M9 Y0 X8 W8 W4 o. B6 t) p8 g第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
8 i9 m3 ~( E$ f+ @8 h9 m) o) m& ^3 L其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
3 v8 }7 a- M7 j- ^" C$ X8 r/ b注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~8 X& A( s" j4 _+ z+ @0 j- y0 D
==============================================
4 b; D8 R, H7 A3 O3 n$ Z1 W' \. D' \方法二、7 c& k H- }3 u) w
7 U2 p% z# K; {5 o9 h" f: u5 J7 S: o* r- ?! s# U/ i
rewriteengine on/ G: o' w4 w7 M# ?4 R. z
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
1 e6 m% n. Y Q/ Yrewriterule ^(.+) %{HTTP_HOST}$1 [C]
' Z- I) R) X5 \$ L, B/ z7 D; Urewriterule ([^.]+)\.域名\.com(.*) /$1$23 a" ~& a& T' q* e, D p. {; l
其他配置文件6 T) N* ^& j. s( ]! \ `0 N; W8 ]8 g
% u2 [8 Y/ L: t4 N/ h
接着在DNS中开设一个泛解析到对应的IP地址。 a" l- S3 @; O3 t
就可以实现下面的方案。
. ] `. q ^* a( Y- u
5 @/ g. a2 R6 a( C: Y) I域名:domain.com3 a( E7 L) Z1 E4 ^$ }: {8 G5 O
绝对路径:/home/domain.com/
# [! f) E1 t! X- P4 r8 Pwww.domain.com 自动解析到 /home/domain.com/www/
% P9 Y7 h( E0 q! B5 A) R. Dabc.domain.com 自动解析到 /home/domain.com/abc/
! z9 i9 ~# r& ?: @( x等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹$ I1 E5 f3 L2 }+ d
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|