  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14171
- 金币
- 2376
- 威望
- 1647
- 贡献
- 1324
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:# X. g( W7 M) e* [& Y. Y; _
; s( k8 E* t) c* {5 Y
RewriteEngine on( x I/ m3 I! Q s3 k
RewriteMap lowercase int:tolower, x# r8 q1 s3 |& R3 m1 Z
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
N8 k7 B' G) L f' n$ fRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$( `: ~$ b8 o* Z, W5 n
RewriteCond ${vhost:%1} ^(/.*)$3 \/ {2 `! S( _0 n
RewriteRule ^/(.*)$ %1/$1
: r1 M0 N- x, W' r, U; H
) d. o9 A, Z. D d) f% [3 a) V( g2 D; n( E4 D
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
6 K o/ B! Z% s4 a% J然后,在这个所在路径的目录下创建一个文件: vhost.map5 Y3 z7 Y7 T1 {5 K# M
内容为:
L4 ^; ^0 S1 t3 X. C. x: u! d9 V" l
www.domain.com /usr/local/www/data-dist/domain, I# Q1 g, \- W' }! l3 ]' W9 Q) ?
bbs.domain.com /usr/local/www/data-dist/bbs
, q& y" e) h, K+ K# d* Sanyname.domain.com /usr/local/www/data-dist/anyname
! C, q% I! M H$ u' X( i k" D2 h8 t/ l8 e l1 |1 V, q" p
以上部分都是:” 域名+空格+绝对路径” 的形式。
$ K: S) D4 y7 x8 v
# s6 G0 {, Y% v, e$ n最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:3 I1 M, t9 U$ Q6 M& r5 O
domain , bbs , anyname 等等,理论上可以无限。$ I; x: y6 V, I; a% W9 W
4 P s" Q: `7 ~) [ y p4 ?+ Q4 q" \
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以! t5 }$ c$ p1 F$ L! n' W Y% M
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。) b6 f5 A' b! Z
" s A+ G/ q4 \8 R' S. a
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。0 ^. P% V5 a- T1 k9 z
第二步:打配置文件尾部加上
" n. f/ k3 K* `3 g C5 J TRewriteEngine on
) ]0 h2 v. Q# N! URewriteMap lowercase int:tolower
/ s" q, F8 o8 c#定义映像文件 V: Q% p) T0 S. [; h0 \+ W
RewriteMap vhost txt:/apache/vhost/vhost.map8 b+ K3 f, B6 a3 U8 q- ^- r8 ]
#处理变名
X; Z+ Z/ v8 P I3 YRewriteCond %{REQUEST_URI} !^/icons/
, o8 ~6 ^5 G0 c; {1 x# eRewriteCond %{REQUEST_URI} !^/cgi-bin/% x0 u, t# g) f0 G9 k. ~: I
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$3 V2 r' ?& Q1 z; t
这里做基于文件的重新映射! B- R9 s" S9 s* B* _# K7 x, j) x' _3 Z
RewriteCond ${vhost:%1} ^(/.*)$
* s$ n1 P V5 H' \9 w' YRewriteRule ^/(.*)$ %1/$1# [! ]- O/ I4 Q. S! `
RewriteCond %{REQUEST_URI} ^/cgi-bin/+ F0 j+ B( i3 ]0 o
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
; J( C7 C4 _4 sRewriteCond ${vhost:%1} ^(/.*)$" b; ^6 g! Z- ^% S; L
RewriteRule ^/(.*)$ %1/cgi-bin/$1' h% T* s1 k* X! S q% o7 I% W" m! Z
3 s5 v" j2 \4 I, k% e: _
注意:vhost.map文件是域名和空间映像的文件,格式如下: 3 d2 R0 R) |- o- g) e
www.abc.com /vhostusr/www.abc.com S2 ` J3 W' E3 }
www.xyz.com /vhostuser/www.xyz.com9 b& c' o p ?* \! L0 [
www.cccbbbb.net /vhostuser/www.ccbbbb.net
4 R) z: E" F" N/ M" N.
' R) e4 W4 |+ Q2 }* W.& q. R# g1 c# G6 E1 h0 w" ^% j
.- U: k/ M q9 \- X2 Q t
.2 N! Y; r2 I+ v# R) q# G, w% G9 ~$ ]
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
' n0 B% `$ @* v1 w. Y第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~: v: n6 h8 M" Z
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~; e. E B7 K$ C2 o
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
$ X/ m# r; _' t& I6 N==============================================8 c4 d0 f# d% X) G. [- _. E# V
方法二、
% I, L- s+ k( z3 W* j+ `$ e1 S3 A; ^4 K+ y
" J( ^& }; v9 j: y
rewriteengine on. Q3 s$ X/ o& P: |2 `! H
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$4 F6 Y9 e, h# [2 ]
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
6 U W3 P; _9 h5 Q2 ]9 l0 ]8 prewriterule ([^.]+)\.域名\.com(.*) /$1$21 H+ `2 m5 P4 M& g# I
其他配置文件7 V5 s2 C' l0 V
. X2 j# w c t ]: U
接着在DNS中开设一个泛解析到对应的IP地址。
0 K, o+ c; L. h* M3 A O就可以实现下面的方案。) H4 x: M: ^8 y% Q0 a
! r2 W; w8 v3 }) V) A4 p域名:domain.com
( L% D% Z" K6 Q) P8 m绝对路径:/home/domain.com/. X) q' M- L' z! C/ j; ]& a
www.domain.com 自动解析到 /home/domain.com/www/
! F; n' _+ k/ m' o/ Sabc.domain.com 自动解析到 /home/domain.com/abc/
3 v2 C+ x! W/ w7 A4 I等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹/ {2 t$ `5 F% F
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|