|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14321
- 金币
- 2446
- 威望
- 1647
- 贡献
- 1394
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
' r& A, _7 U" p3 O
- Y& G7 y% T% S# y& GRewriteEngine on
- @% M0 X2 N$ V& C8 }RewriteMap lowercase int:tolower: v8 r/ r! D# C) ]. @( R6 c. _. {
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map w% |' x3 ]- s5 c3 `
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$3 w( i6 _! L9 L3 _" I- w% z1 V
RewriteCond ${vhost:%1} ^(/.*)$. t7 [6 e- [5 u2 x
RewriteRule ^/(.*)$ %1/$17 j2 W+ y- z f, v
5 T% P, B3 J9 ~2 S1 D
4 T. @: q1 K: d$ A# Z/ C; U其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。; H% _) K4 d, A. ^3 y7 L; Y c
然后,在这个所在路径的目录下创建一个文件: vhost.map
a6 b5 ^" N' T内容为:
7 f$ [# K N, z3 I& k
1 Y7 z) K1 }5 T$ C! rwww.domain.com /usr/local/www/data-dist/domain0 V9 |+ k3 \7 g5 z5 f6 k
bbs.domain.com /usr/local/www/data-dist/bbs' v. D$ A3 m1 c+ y% D7 a- W
anyname.domain.com /usr/local/www/data-dist/anyname
, S# M6 p( d% Q3 g. A8 n# _/ z. ^' b% }* F; ~
以上部分都是:” 域名+空格+绝对路径” 的形式。7 i% X! U. k: V, i7 x' Q: g
# @& K! F8 _* E) O) J
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
% c* T# i$ X# [( t- Edomain , bbs , anyname 等等,理论上可以无限。- f% e9 D/ Z K, D; D' \7 r
% K$ h: _8 c5 o: P$ |这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
2 }3 g$ N$ n u随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。1 l5 x2 \, D& S3 @# v. R. T8 N
: h6 N' V4 [9 |5 l
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。$ q" X9 g( D4 k4 Q
第二步:打配置文件尾部加上' \& f* y$ m3 n2 l
RewriteEngine on
! b. B9 m2 k4 i, v0 c! _& H# \! `# dRewriteMap lowercase int:tolower0 P8 ?; R7 B1 z2 {' q1 {
#定义映像文件" P9 B8 q- A, g% q$ O) i7 u$ N
RewriteMap vhost txt:/apache/vhost/vhost.map
1 y" t; @" p+ a% i1 U: G3 s8 n#处理变名/ \3 k6 s. [/ `/ Y" b8 D
RewriteCond %{REQUEST_URI} !^/icons/1 \0 K$ M- d8 L1 I" e% F+ u6 x% R( B
RewriteCond %{REQUEST_URI} !^/cgi-bin/6 d' c* d3 U5 K4 L; x
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
' z. r; `0 u% Z5 O这里做基于文件的重新映射
) s5 J$ k3 K) w; W( pRewriteCond ${vhost:%1} ^(/.*)$
" d. x4 Y# D: c( \RewriteRule ^/(.*)$ %1/$1
9 ]' r& |5 |. _" _$ F6 TRewriteCond %{REQUEST_URI} ^/cgi-bin/, f8 O8 U2 i8 ^$ U
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$4 ]3 q9 b3 p& \. h
RewriteCond ${vhost:%1} ^(/.*)$" n. p( M5 x$ c+ C S7 b
RewriteRule ^/(.*)$ %1/cgi-bin/$1
+ }- W! X5 I+ d- R B u
* V6 Z* Y6 A& d! q. ?( a注意:vhost.map文件是域名和空间映像的文件,格式如下: # ?0 U# r0 `* d, O5 ^) u3 w
www.abc.com /vhostusr/www.abc.com
9 j3 E0 E' f6 p) \' hwww.xyz.com /vhostuser/www.xyz.com% Q$ }4 f2 E; e) d* ?& A; Z
www.cccbbbb.net /vhostuser/www.ccbbbb.net
$ s2 f' k/ y# G4 s$ F, U./ G# E' f' j2 ^7 d/ F) {) e) z
.
) Y* H; m3 ]* b i: d( ?.
! M2 s0 X4 q0 D" x3 H) ?) W." m* Q( k) e( d7 n$ R& V
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)5 A$ l" c, W: S) j- c0 P
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
/ K6 Q9 T% v' h( H其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
6 G( A0 j9 r! O: ~6 h: ]注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~9 N, ^, U1 j! U4 I& E
==============================================9 x; ~9 |( [( O
方法二、
+ ` v: T7 \" j; j) O. @" y9 k/ ^2 w* \) H$ X5 G
5 r- L) A- u' H6 Prewriteengine on/ X1 l: x \5 s
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
8 W* H: n. I* K/ `rewriterule ^(.+) %{HTTP_HOST}$1 [C]- O5 }3 F% z# o& W2 t3 o
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
- _9 b# [: P" Y2 r- F5 o其他配置文件
# @$ [5 l3 F/ B% Q8 q0 m
6 M* C. K/ M1 ?! R6 j接着在DNS中开设一个泛解析到对应的IP地址。
9 n" [4 F. W4 D0 l就可以实现下面的方案。' S2 T9 m0 R1 n1 d# ]
; r8 L0 D# }( z- e9 |# h
域名:domain.com0 c/ i3 B- g; `* E" Q+ O, a
绝对路径:/home/domain.com/
% u4 J3 G% n- p9 `www.domain.com 自动解析到 /home/domain.com/www/
1 n6 l5 |$ Z7 J: Fabc.domain.com 自动解析到 /home/domain.com/abc/
3 Y; S V. y" v" M等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
{0 ? \* V% y- M. S" f直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|