返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
7 m/ t' Z" k; `  ]: o. t* \  \. w6 b- D  L4 N3 X0 O
RewriteEngine on
3 R9 f- {- P- k$ m4 nRewriteMap lowercase int:tolower* N( g! ?2 S. t  @- R
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
" }1 \$ b+ ]5 v1 ZRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
' T6 q8 o! M# w$ _, E& ]RewriteCond ${vhost:%1} ^(/.*)$3 e. k: @# u3 z# m/ `! R( G, C
RewriteRule ^/(.*)$ %1/$17 D2 I. ~/ \) ^6 r- o$ Z

& c. z3 Q8 w# Q) {. [, E; z7 G
  R. ]% @0 F  I& T4 }9 r其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。2 M, h; Q' g+ V' y- x" d/ t+ z  N4 ]
然后,在这个所在路径的目录下创建一个文件: vhost.map- f+ p$ ~" t8 W4 E1 N
内容为:; u8 o. d5 e$ i8 K  Q6 l2 S
5 x4 W  ^% }9 X2 l, u; p" r
www.domain.com /usr/local/www/data-dist/domain
% }5 d( K3 _  F  {: cbbs.domain.com /usr/local/www/data-dist/bbs" f+ ?! s. _$ i7 ]. z% Z7 @8 S# U
anyname.domain.com /usr/local/www/data-dist/anyname
" G* R9 F& [1 d/ V0 v4 U7 q4 D# [# X/ v
以上部分都是:” 域名+空格+绝对路径” 的形式。
) d; ^& j0 u! j1 X4 I
3 W) p/ y" V) A8 L( d  X, E- g$ Q9 r最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:3 C3 R+ B9 u8 U+ x3 k# L
domain , bbs , anyname 等等,理论上可以无限。
1 Z5 v% B' Y3 h- J/ u1 R5 W: [% M" \+ a) x0 t
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
3 _, \1 F; c" z  n' C4 e. o随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
# O8 z: ]7 r, L; a5 j6 V+ J( e" [. {; i$ s3 N7 v
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。% P0 I9 O& u4 t, \
第二步:打配置文件尾部加上
, z. x' a; t2 @RewriteEngine on
# ~: ?: w& P% a2 WRewriteMap lowercase int:tolower' p( i# z9 e: s4 w
#定义映像文件- q1 _. u  o' h# c9 Z. [  C- t
RewriteMap vhost txt:/apache/vhost/vhost.map" T$ L% r2 y0 ~2 F+ j8 h
#处理变名
9 _& h" M  o5 Y0 ]RewriteCond %{REQUEST_URI} !^/icons/0 V. T7 q& e. \9 m8 N7 \$ [& g% z
RewriteCond %{REQUEST_URI} !^/cgi-bin/9 |6 J: r: a0 }, J6 t
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
; J9 Y6 j  R8 [0 l% o, R5 ~4 I这里做基于文件的重新映射, x( Y0 z4 M$ x7 C* e: p% g  O2 T1 I
RewriteCond ${vhost:%1} ^(/.*)$4 s  X4 G9 b6 h. }( X
RewriteRule ^/(.*)$ %1/$1
. |' S, r: l1 sRewriteCond %{REQUEST_URI} ^/cgi-bin/- J$ G6 K) x3 w
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
. `% t) h1 M# ?7 `6 }! B5 cRewriteCond ${vhost:%1} ^(/.*)$
) z/ P2 G$ g* z: ]4 ARewriteRule ^/(.*)$ %1/cgi-bin/$1
6 C2 [, t7 R) Q
' B3 \/ u+ B3 z5 w! S! [# F注意:vhost.map文件是域名和空间映像的文件,格式如下: ; T8 E! c2 s' `3 f
www.abc.com /vhostusr/www.abc.com
4 `0 D+ Z) F$ E- \. C$ Vwww.xyz.com /vhostuser/www.xyz.com9 N( S; u7 x3 {( S; o" m! t! k
www.cccbbbb.net /vhostuser/www.ccbbbb.net/ r% b0 b9 g/ K+ j2 L3 W9 M
.
7 W7 D4 Z' I! H: @.( _# I& c8 g  {) O: k$ _# [
.  d! W' u9 L6 B/ l9 C- ]( `0 N
.
+ }! |# S6 r5 a  B6 r2 q: |8 ](你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)) f9 l: r7 B. J1 X2 \
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
" E! n9 {3 C# N) ^其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
3 l3 l5 r& a- ^% H( J. V注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
- f, a% T4 h) N# f; k6 j/ D- r6 _==============================================
4 x3 f3 _- j7 k方法二、
8 y) c* {7 }8 s8 D1 G& L8 o3 C" p2 x$ P* n2 t- S& T: {

) w3 q' e6 \$ c- J3 H& srewriteengine on
: F9 Q% d5 |! m% h0 S" |rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
* z8 L; ^! O( ^: lrewriterule ^(.+) %{HTTP_HOST}$1 [C]: h" p3 q+ A! T; K
rewriterule ([^.]+)\.域名\.com(.*) /$1$2, w# x# Y9 w4 L0 v
其他配置文件* K  f! ?1 ^+ `4 I
- V/ U2 P* Z" c$ v7 q
接着在DNS中开设一个泛解析到对应的IP地址。9 W* X1 {% ?; J  }. f
就可以实现下面的方案。; ]4 |- a# {; r' P

, a$ o- a0 U) q% ?3 d域名:domain.com
4 `$ O8 {  h# a  o绝对路径:/home/domain.com/% s2 U6 M7 e. _) e8 |
www.domain.com 自动解析到 /home/domain.com/www/
4 ]5 s* y% c. V" f& Cabc.domain.com 自动解析到 /home/domain.com/abc/
8 X/ m, J7 |2 i8 P' p等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
/ t: D- z, Q( [) W- _- j9 _直接建立子域名名称的文件夹即可使用。不需重启apache。

返回列表
【捌玖网络】已经运行: