|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14441
- 金币
- 2506
- 威望
- 1647
- 贡献
- 1454
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
l( C/ m. F& X% [- E% P6 @3 P$ _: K4 a! S; ^) |1 G( A1 i$ `: \
RewriteEngine on Q! m# {: Z% u8 x$ ]8 \
RewriteMap lowercase int:tolower
' A/ o. M2 T5 p6 \0 U$ vRewriteMap vhost txt:/usr/local/etc/apache/vhost.map p( l n( G1 @7 ?6 d% _2 E7 `% v/ ?
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
& |- p) c9 M% z* `RewriteCond ${vhost:%1} ^(/.*)$9 s1 x% B" C: z2 c; f* Z' D1 a
RewriteRule ^/(.*)$ %1/$1
9 ]1 Y/ U' T$ p0 [- Z# W4 I6 u I7 X( y7 I) I4 M
+ B+ L! \( }, j/ W) u0 Q* M! x
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。3 R( [7 q0 i, `8 A/ s
然后,在这个所在路径的目录下创建一个文件: vhost.map
( K+ Z8 ^2 x+ M1 `! i( z内容为:( Z/ d g: L3 x! x3 L7 j
7 [9 n2 C# i1 Q E6 K9 I$ j- U
www.domain.com /usr/local/www/data-dist/domain# F* o( v5 G' O6 A4 F4 e& q+ l
bbs.domain.com /usr/local/www/data-dist/bbs2 i; \ y) j% s6 g e @, y
anyname.domain.com /usr/local/www/data-dist/anyname5 l2 J5 e6 G1 u2 I6 V
- k8 s$ t( H7 p% k# O7 S- q6 K以上部分都是:” 域名+空格+绝对路径” 的形式。
8 }2 x( Y2 r1 o+ r% _5 s) G1 ]$ { O; ?) n9 K2 N$ V4 O2 ^9 f
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:6 s- m" q$ h2 H) F. }, J1 A
domain , bbs , anyname 等等,理论上可以无限。
9 a" n! u" D0 L# |5 m; v) |0 J# j
" I( }1 } u: P" d2 @+ i# a+ n这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
' v4 B) R7 w: Y0 Y% r! r: K# t随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
3 a- X* W! p$ }+ |( y) t! o& A \5 S1 J2 [) {) G" J0 |
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。! b A5 s0 \( i7 u! {
第二步:打配置文件尾部加上( b# \+ I7 O' I
RewriteEngine on
& Y: s3 x5 e" b$ P. _1 KRewriteMap lowercase int:tolower! I0 X' i, v2 x
#定义映像文件
1 ]/ r8 m! b8 q. h! n' m5 [RewriteMap vhost txt:/apache/vhost/vhost.map7 t0 g" p6 y: c$ L$ E' m+ h7 H d
#处理变名0 J" y" o6 f7 H6 r
RewriteCond %{REQUEST_URI} !^/icons/
' |+ T3 J: R7 l2 m0 n4 _8 F" F) kRewriteCond %{REQUEST_URI} !^/cgi-bin/
$ U* C v9 ]! {* tRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$6 Q) [# `! k3 _1 E f: K
这里做基于文件的重新映射) M5 X/ A4 e4 F r& X7 W: ^
RewriteCond ${vhost:%1} ^(/.*)$
& L8 h; P8 Y2 b6 C' l# G# B0 M3 J; xRewriteRule ^/(.*)$ %1/$1
% @. w! D* K$ GRewriteCond %{REQUEST_URI} ^/cgi-bin/
, R: \1 P" ~) }) e& q$ I$ |RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$( z$ S9 c/ a6 l U4 c
RewriteCond ${vhost:%1} ^(/.*)$
' Q+ I5 s( C2 s$ _% SRewriteRule ^/(.*)$ %1/cgi-bin/$1
3 E6 W9 H8 j7 p$ X, k" @8 g& h5 W* A( H8 s8 n9 B% `! Y1 o% t
注意:vhost.map文件是域名和空间映像的文件,格式如下:
) F7 v8 X9 q" _1 z' s8 {4 {* pwww.abc.com /vhostusr/www.abc.com; \. W1 J" \% S, ~! K: a
www.xyz.com /vhostuser/www.xyz.com
! v/ i2 ]- \# f' e$ h+ |www.cccbbbb.net /vhostuser/www.ccbbbb.net
1 T! a% Q; O$ X- W9 i; y5 W.- b- }$ Q0 d. \- B& o l3 `- n
.3 k, S: o" F) ^' y7 f. R
.
$ A# f" u9 U2 ~9 C2 e1 P' z! A.& x# y2 M& I2 N
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟) R0 D/ S9 J1 b
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~, @3 H) z, R3 p! d$ A2 {& d
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
3 ^3 Y m+ y( w1 a6 Q! q1 h注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
x, N. }4 G h+ e) H==============================================! j: z' l. s$ x
方法二、$ I% V: Y( a+ ~& |
% ?" v# j1 x% k; i" b' u
4 V" {- I3 g( @0 _9 d" k1 Hrewriteengine on
- |/ H6 n$ ~* M7 G: hrewritecond %{HTTP_HOST} [^.]+\.域名\.com$. f; k, f2 {: f& ]/ u5 x- ? Y
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
( e- o0 E" X: y: ^* `3 arewriterule ([^.]+)\.域名\.com(.*) /$1$2
N. u$ ^" o, n- s! q# G- ]+ K其他配置文件
8 T! T9 T0 c6 I7 J- l! R% J6 ^: a# j! B" \- J& w+ z0 O. ?. C1 B/ E
接着在DNS中开设一个泛解析到对应的IP地址。
2 k, B/ V t; |: @6 w' A# n就可以实现下面的方案。/ _7 F! u: n* N# F" S. p) d8 N0 e. X
" j- j$ P6 N0 J! f' S) Y' V
域名:domain.com/ K( [% ~% d, r3 O- o9 q( {; V
绝对路径:/home/domain.com/
! n6 S7 _% c1 @( Bwww.domain.com 自动解析到 /home/domain.com/www/$ W# {9 K2 w9 Y$ |6 A/ F
abc.domain.com 自动解析到 /home/domain.com/abc/7 [! k+ E9 r3 w2 ~! r: J( |
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
' Q8 |: T0 t! b/ S/ Q直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|