  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14191
- 金币
- 2386
- 威望
- 1647
- 贡献
- 1334
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:+ R% J( u- V D$ @2 y# T
, R8 _/ R5 N/ S" h1 A, M
RewriteEngine on/ b b) |* Q! j3 [6 F8 {2 t
RewriteMap lowercase int:tolower. b5 L0 I2 t4 h
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
* \4 ~6 t# G% {4 j# `3 S7 [3 H QRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
7 p" o2 [- c8 n+ o" ~RewriteCond ${vhost:%1} ^(/.*)$; u; r: S2 F9 j& e
RewriteRule ^/(.*)$ %1/$1
5 E9 K4 m. L, n3 H0 u4 |! U, x* c9 M, ?7 y6 {3 l1 Q9 S. V
+ l3 _ o& K, q
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。4 [. ?2 y1 S- O4 g j1 q
然后,在这个所在路径的目录下创建一个文件: vhost.map
" ?+ g2 n. ^9 r7 e2 W6 p内容为:0 R1 Q- I3 p! v/ ?
0 q6 m% Y: d- c4 j4 P! |3 Ewww.domain.com /usr/local/www/data-dist/domain( K) B. o3 U# z: w. Z* b
bbs.domain.com /usr/local/www/data-dist/bbs
- n8 g3 _* c4 X0 K/ A" Lanyname.domain.com /usr/local/www/data-dist/anyname# K3 j7 x( \8 m8 i
+ O6 p9 J; @$ L7 E8 S% ~' `以上部分都是:” 域名+空格+绝对路径” 的形式。
2 b9 A. D5 E( D5 N
8 |; X& l+ J& g" ?* B9 o最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:6 p4 m) x7 \+ p1 y8 ^
domain , bbs , anyname 等等,理论上可以无限。
% U, W# h% [& F0 @; Y" m9 K8 d+ g
/ P: |3 b R, [这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以3 t% L/ W% O: s# L: }* M
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
0 I4 F! P0 x. O* B# V4 u# S+ n; v& `, a) { ~% H. g( o
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。& {5 n+ k/ J0 S* [5 T n
第二步:打配置文件尾部加上
( Y. g& z% @% N; _" ?( yRewriteEngine on
9 k5 D& ^3 }4 L8 F; G$ T: ARewriteMap lowercase int:tolower% F# k# P0 e$ L6 i
#定义映像文件
8 M! y* g9 d" Y6 P. T, KRewriteMap vhost txt:/apache/vhost/vhost.map2 R" [# x( k0 N8 V* _+ i+ W. t
#处理变名
# y3 v2 u- y6 C8 MRewriteCond %{REQUEST_URI} !^/icons/
4 x) _2 v/ ~( ?) M1 d/ V% |4 @. qRewriteCond %{REQUEST_URI} !^/cgi-bin// i& ~" p- e% N L3 V
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
, \2 J. k- V! S8 F0 v2 d% f这里做基于文件的重新映射: v0 O! ]5 r5 c/ a
RewriteCond ${vhost:%1} ^(/.*)$, O0 T: K) C; y5 f
RewriteRule ^/(.*)$ %1/$1
6 U- x$ w' J! bRewriteCond %{REQUEST_URI} ^/cgi-bin/
% y7 ~ R/ q8 G7 |+ ~2 a2 G WRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
* u1 `$ j) ?; B0 W8 K1 l0 x* @0 I+ g' YRewriteCond ${vhost:%1} ^(/.*)$
0 z) |; ]# X) _( ~# |! g2 n8 iRewriteRule ^/(.*)$ %1/cgi-bin/$1$ }, Q; p( A/ m0 I+ O1 m
4 X8 l5 i) C3 G9 p2 o, [4 W
注意:vhost.map文件是域名和空间映像的文件,格式如下: $ J# D% {2 Y! ~6 S: L
www.abc.com /vhostusr/www.abc.com$ {& \* k4 k; O& |. B
www.xyz.com /vhostuser/www.xyz.com
% y5 R% r5 l9 A& e6 O/ cwww.cccbbbb.net /vhostuser/www.ccbbbb.net
" X' u! b/ U' k0 M: L- Q.
6 l- b5 S* x6 x6 p.& g; t u4 c/ j* m. s; Z; k
.
( }1 M+ g/ N) O+ a.+ X$ {6 N8 [- z; B) A
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
$ Z. e& v, u* d c1 v第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
7 T$ n7 N& B+ r. M1 | j其实这个可以用php脚本来完成的,很简单的~~呵呵~~~: q; o% Y: o9 t9 s2 D
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~! h$ C) T, E; ]( F, ? C, c
==============================================
+ ?' E% q0 A+ T方法二、
* v# [& F! a7 J6 w/ |& |( k; }0 g7 ]+ t- ~' C- f) v! W
4 p3 [$ _& |# |0 X6 nrewriteengine on: Y4 D0 |% A, d, J$ `5 S
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
6 y0 n3 S- D5 L7 U, n5 p6 prewriterule ^(.+) %{HTTP_HOST}$1 [C]1 F1 A" ^- x' O% J+ P, I
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
% |9 T3 l% {2 t! J) _- D其他配置文件
$ F- W( J+ I8 a( M# N$ @, U
# d l* h5 A+ Z, |& W* p. x接着在DNS中开设一个泛解析到对应的IP地址。
j# D( I1 j7 s. }- l- u就可以实现下面的方案。: E7 L* F& x4 D( r* i$ d5 u8 u
) D: A/ O# Z$ n4 V5 u
域名:domain.com9 B V. a( b' B% c2 V" [
绝对路径:/home/domain.com/
' Y O5 ]# X! G' m% cwww.domain.com 自动解析到 /home/domain.com/www/
8 A; o- P" s6 @; r+ xabc.domain.com 自动解析到 /home/domain.com/abc/$ @: F/ }; f9 T n6 O0 Z
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
: c: z& e, O6 h- b9 Z直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|