  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14221
- 金币
- 2401
- 威望
- 1647
- 贡献
- 1349
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:8 p* `/ j6 c6 D& E2 x
" L3 q0 I B1 ~9 D1 N2 a1 ^1 P5 v( M
RewriteEngine on
) E. g4 v, c& KRewriteMap lowercase int:tolower
/ G5 t1 F1 H$ d) f3 F4 l( qRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
2 M9 ^ F% e Y, O6 n2 A6 YRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
8 @3 S$ N9 S; Q6 F1 [RewriteCond ${vhost:%1} ^(/.*)$$ o5 L+ m3 j8 v0 Q
RewriteRule ^/(.*)$ %1/$1, ]+ I0 Z' j2 W* J! E" Z: Y( X
! J7 m4 f" C7 |7 ~) M& S; o# ?
) N* E( d: F" v其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
1 f" o$ f/ I8 J/ e( G然后,在这个所在路径的目录下创建一个文件: vhost.map
3 s7 X5 z3 x: x+ c3 q内容为:
0 k) L3 O, Y1 w/ n* ~" [% J% i3 x4 I
www.domain.com /usr/local/www/data-dist/domain
' [% \2 i( z I" @0 m- lbbs.domain.com /usr/local/www/data-dist/bbs! ]0 f' z2 ?) K! O. ~3 v
anyname.domain.com /usr/local/www/data-dist/anyname
8 I% B; k0 J) b9 \. G2 ^. L; l9 y( Y; E% K( I2 q5 Z- a/ B
以上部分都是:” 域名+空格+绝对路径” 的形式。
/ c; z' }& L( a+ o/ {# b
, Y% @6 Z3 ~. K& z最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:% z3 Y0 c4 z% Q8 U) B
domain , bbs , anyname 等等,理论上可以无限。- P, h: \8 ^# J
3 k5 O/ X/ @, t
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以 F( ]' I1 w1 b% M/ Q
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。9 Y* U* N& N. p2 O; V; ]
( M* U- W" Z9 f, U) }5 J0 Z
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。6 e( I% F7 y4 \
第二步:打配置文件尾部加上
V3 F/ _4 `% | u3 B0 F4 [) YRewriteEngine on! o, \- k( \; r6 a# A: h' z8 D
RewriteMap lowercase int:tolower1 e4 ^% l; r5 O4 y1 N* U
#定义映像文件
8 g4 j1 }, e' `% F' W( T; }% HRewriteMap vhost txt:/apache/vhost/vhost.map
3 f: V; b% |- O+ I; B" P#处理变名% R T" v& m; i% ]
RewriteCond %{REQUEST_URI} !^/icons/3 c( D: h# [+ n9 K8 Z$ T$ [
RewriteCond %{REQUEST_URI} !^/cgi-bin/$ }9 K. \, l4 W4 h# R k
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$: _( J/ D1 U6 c4 m8 M4 j
这里做基于文件的重新映射/ ~- X) W8 {7 u5 r) O% H( p% r
RewriteCond ${vhost:%1} ^(/.*)$8 b% c3 Y9 S) D
RewriteRule ^/(.*)$ %1/$1) H' j7 a4 O+ P- D4 K5 g
RewriteCond %{REQUEST_URI} ^/cgi-bin/, g2 l0 G5 G7 Q! a6 `
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
6 Q9 I2 @- K% P/ J0 y$ LRewriteCond ${vhost:%1} ^(/.*)$
. Q, W$ h1 c. j- _7 H* u) xRewriteRule ^/(.*)$ %1/cgi-bin/$1% Q( ]& Y l% B* L
, u5 k- z4 ]+ E! Y* _& T注意:vhost.map文件是域名和空间映像的文件,格式如下:
6 b" y4 T, ^5 |8 | Jwww.abc.com /vhostusr/www.abc.com0 h8 [6 s, A3 _
www.xyz.com /vhostuser/www.xyz.com
0 a: P7 a! ~0 Qwww.cccbbbb.net /vhostuser/www.ccbbbb.net
, ~* J$ R' `* W/ I.
2 E3 j M8 |" F r6 ].9 P, P0 o% x" ~/ \2 w J
.
& G+ `9 b- T! |.- |: f6 K0 l5 U1 v& O
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
) M, z: m2 q9 [* m第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
3 [4 ]9 ]& Y4 O4 U; e6 [其实这个可以用php脚本来完成的,很简单的~~呵呵~~~* s+ K) V8 E1 }9 t" w1 |: k! f8 w
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
. B/ o- v% S7 ^) F }==============================================
+ G1 k! H7 v, W方法二、
2 O% M3 F ? ^6 w- s9 ?* A8 b" l( g! O( H3 B- ~; v
- y/ m) ^% l' _6 D# G: h2 H( L1 {
rewriteengine on
$ E* o" F, ~& {9 b3 trewritecond %{HTTP_HOST} [^.]+\.域名\.com$! ^- I1 J1 V; _
rewriterule ^(.+) %{HTTP_HOST}$1 [C]- I# E# u: Q1 S9 s& r/ {
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
# s: C0 I5 e6 [: y( I* k/ W& Z其他配置文件
9 A' p: l3 _( r
" R0 I7 \8 g8 ~' W G6 j接着在DNS中开设一个泛解析到对应的IP地址。
* T/ n7 G z0 b5 x. q就可以实现下面的方案。
% n8 [8 y9 n# i4 O D; c2 W3 o# C
2 A1 ^; O" ~$ p& u& X! o7 |域名:domain.com
, t: c1 L, m. a- L' q绝对路径:/home/domain.com/
. O; u- W/ M% d7 k( @www.domain.com 自动解析到 /home/domain.com/www/
! D7 ^1 n9 e0 l+ A7 `, Babc.domain.com 自动解析到 /home/domain.com/abc/9 F3 Z; D5 \7 h1 f. c* o
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹6 F5 l4 F) x, R7 _0 |7 A) X- Z
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|