|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14325
- 金币
- 2448
- 威望
- 1647
- 贡献
- 1396
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:. S& w& j5 A, z
, O) Q2 y( R, D3 CRewriteEngine on
, c) I* V) j% z4 c* @RewriteMap lowercase int:tolower
% ^$ Q2 v1 d$ ?4 ^+ Z& T2 cRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
% v# Y. L! U2 t/ b8 aRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
* h. ^0 ~1 C b/ [, \RewriteCond ${vhost:%1} ^(/.*)$) o0 \1 b" H$ [3 H
RewriteRule ^/(.*)$ %1/$17 {: U* ~+ X& L4 A1 Q# w
0 G) e* g5 J$ M1 x: I
1 d6 \0 y1 S _- Q其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。: o# @7 l9 D0 F( V6 y* k! H4 h5 g
然后,在这个所在路径的目录下创建一个文件: vhost.map
1 h; h* h$ I- |" a6 V& ?# }内容为:
9 a2 ?6 {& |7 M; n K( R, @4 I( Z6 L: c; \ u: Y1 h- [0 s
www.domain.com /usr/local/www/data-dist/domain% a8 w$ {. S5 I! W
bbs.domain.com /usr/local/www/data-dist/bbs
# ^4 n* I G0 @anyname.domain.com /usr/local/www/data-dist/anyname z; Y `1 K7 v6 e" @
3 b( H3 g/ X0 o8 u4 e5 w
以上部分都是:” 域名+空格+绝对路径” 的形式。# g* p1 N3 @5 ^8 H
1 ?7 Y0 ]" B4 ?- |1 |
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
, z. S& R" Y8 y V6 k2 R c, odomain , bbs , anyname 等等,理论上可以无限。6 f d. ^4 k( a L3 m) ^( M
* K& t$ O. L3 S- C' G5 t4 C a r
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
3 N$ \) Q6 a8 ?: p随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。, |! \" r9 E0 L( G) p" n
+ C3 k8 i, ?5 a4 @5 ` r第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
8 Q, ?( J% \) h& E# p- [第二步:打配置文件尾部加上; g9 F3 I4 w7 Z$ u0 s; j& q, n
RewriteEngine on
6 O2 U, e* R! w. a6 u1 d/ Z4 TRewriteMap lowercase int:tolower
# e9 L% r- v7 \8 E9 w8 ]* A#定义映像文件
y3 ]& X& O0 A9 [5 j* gRewriteMap vhost txt:/apache/vhost/vhost.map
3 Y4 @6 S* `9 c( g* h8 i# C) P g#处理变名5 \8 G# S! ]/ m; m& G
RewriteCond %{REQUEST_URI} !^/icons/; \1 b4 f; }: x1 h6 I& Y
RewriteCond %{REQUEST_URI} !^/cgi-bin/- V0 T- \6 x( N% M% v5 n9 t
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$0 V1 y8 S: Q+ ~
这里做基于文件的重新映射; f1 m% N" c/ `/ u: p. z
RewriteCond ${vhost:%1} ^(/.*)$
! R% |! P' d: |# M* z# K! A5 MRewriteRule ^/(.*)$ %1/$1$ C H* z S, i
RewriteCond %{REQUEST_URI} ^/cgi-bin/. }! Z4 Y3 H7 s; s' U" i; }
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
0 I9 H* r5 N' \" X" k& V) g( V- q" p; [RewriteCond ${vhost:%1} ^(/.*)$" z9 @* v. u+ J" N5 [* E1 V
RewriteRule ^/(.*)$ %1/cgi-bin/$1, G$ i5 C5 O) Y7 s$ X
# K( ~; L, r, n3 Q/ ^3 o
注意:vhost.map文件是域名和空间映像的文件,格式如下:
& i- O, | U7 R( @1 s4 Vwww.abc.com /vhostusr/www.abc.com
3 B. Q, h) x4 u2 Dwww.xyz.com /vhostuser/www.xyz.com
1 w* [1 G; L9 _! C0 Ewww.cccbbbb.net /vhostuser/www.ccbbbb.net; y. t& W: H$ v2 o+ K0 E
. b" R1 ]' X* y
.
$ J' i! b( n* k- y8 E; C$ V.
; Z, A4 @' m/ f: t& r+ V.
$ L4 p9 T; e0 `7 s(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)0 ~% }! Q. H% Z* [! ~/ c
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
; \) t, p5 L8 Q: [; @& f其实这个可以用php脚本来完成的,很简单的~~呵呵~~~4 Z0 G) F( U+ I5 p7 S
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~9 H( i2 V! }) z% J- U! w
============================================== V+ a8 n2 A0 e" r' C* R' E! R
方法二、
1 [/ b6 z3 ^) r! U, i5 m
A6 F& T/ Y1 r6 L, @' k; d
* l6 h1 O. S7 {& V) n9 erewriteengine on. y' [$ V- W! M: {" k1 R8 q
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
0 u7 g5 h; }! x3 v& Q+ k0 Rrewriterule ^(.+) %{HTTP_HOST}$1 [C]& [1 y4 n1 n1 w( P" Z
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
( p+ W9 t3 m. A2 E h0 l其他配置文件/ u$ r5 F- R! N- A
8 C$ g7 G8 K4 T' T- t9 P! z接着在DNS中开设一个泛解析到对应的IP地址。$ k% c4 j0 d( x: e* V
就可以实现下面的方案。
( i/ u' L( u0 s% O$ s; M* j
! R5 D: D1 L* T8 b域名:domain.com) v8 L' n( R; C( X8 w1 C
绝对路径:/home/domain.com/
b# _; j4 z2 o6 b7 i$ r* @* _www.domain.com 自动解析到 /home/domain.com/www/
, P) v+ A" C+ w) E5 z% eabc.domain.com 自动解析到 /home/domain.com/abc/3 S8 x T/ e7 {& p- W2 e
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
! o3 r: ~% y( w0 a直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|