返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
9 |% F5 J8 m  A: n3 R9 \$ N% e# I# i3 T/ e
RewriteEngine on5 e" P6 R0 Y$ S& K# }% T2 I: S$ q
RewriteMap lowercase int:tolower
, S/ A# p( b6 iRewriteMap vhost txt:/usr/local/etc/apache/vhost.map7 j- B, `& [! f( u3 ?5 Y
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$/ E3 B! |3 x" h) K: o$ A
RewriteCond ${vhost:%1} ^(/.*)$
" K8 }. e% t4 R& K( pRewriteRule ^/(.*)$ %1/$1
; x4 m( j5 G* L, e- {" q3 Q
# ]& O$ h* E7 g1 N+ L: R, \  [- @# P
3 ], |6 D# D# U+ z5 |其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。* l. }/ E) ]4 B6 E
然后,在这个所在路径的目录下创建一个文件: vhost.map  O! F' u, @3 W5 X& n2 [. A- P
内容为:8 e( H5 p  @, D, R% i- B/ G7 ~
3 }, O, _, |. P0 ^
www.domain.com /usr/local/www/data-dist/domain5 L3 i6 `* `" S5 g
bbs.domain.com /usr/local/www/data-dist/bbs, |: z: u; J' V3 n' Z0 V0 i
anyname.domain.com /usr/local/www/data-dist/anyname
& O: C5 l! Y' F) C: A) ~$ y3 @; p! Z( Q, C$ D  e' ?  v# x
以上部分都是:” 域名+空格+绝对路径” 的形式。
, P* ^9 {" |1 V9 H
+ N' y1 R6 P4 `最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
& f$ P- E6 s" r. y7 Kdomain , bbs , anyname 等等,理论上可以无限。
2 u" B) X0 a, N3 |# d$ h  F6 N+ O& ]; L; q/ I
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以- u" `/ m; {$ t
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
  K' }" F  a# _& k$ K/ O; @8 Z- x$ N! v- }+ X9 P. X
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。6 u% N: \8 e4 ~, U- N2 T
第二步:打配置文件尾部加上
1 x% A1 P% S' y5 dRewriteEngine on
) p% _4 u+ Y1 p" sRewriteMap lowercase int:tolower
, F( J$ d7 X; ]- F1 @#定义映像文件
$ Y3 l5 L$ i0 a1 TRewriteMap vhost txt:/apache/vhost/vhost.map+ A5 h! Q# {: W. M
#处理变名
2 O9 G2 Q2 j1 t/ v6 X0 z( q" zRewriteCond %{REQUEST_URI} !^/icons/6 I  @% g6 q: W; d; g
RewriteCond %{REQUEST_URI} !^/cgi-bin/% m& m4 y) ?0 w! v$ S
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
' \  \6 }' i/ a& G这里做基于文件的重新映射
5 C" A8 a/ L7 g5 VRewriteCond ${vhost:%1} ^(/.*)$
" d. }: i5 Y- L7 y9 L2 L( w2 bRewriteRule ^/(.*)$ %1/$1: c; F/ s4 p  Y2 [, k
RewriteCond %{REQUEST_URI} ^/cgi-bin/2 c$ k) W; w$ V/ D
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$  f) {* X% X; L' b7 u
RewriteCond ${vhost:%1} ^(/.*)$  f; ?) A( e( g* _& }+ N0 D  I
RewriteRule ^/(.*)$ %1/cgi-bin/$1
4 a- ~& V* c3 o3 T" k; y/ _7 ^+ b3 k. Y
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
; n7 R3 P" o/ o3 F/ L% y+ Fwww.abc.com /vhostusr/www.abc.com
! x% t. m' v( t' Swww.xyz.com /vhostuser/www.xyz.com
. d7 n& `! N" G$ Z5 j: A4 |' j4 Wwww.cccbbbb.net /vhostuser/www.ccbbbb.net% t! `+ O# R! o
.
4 v( W6 y( ?9 Z# V.
1 p7 F+ n4 f# X% e$ F1 u8 x.( S  ]' v0 z  J# ]6 z
.9 q3 k5 N7 x8 P; s2 B7 b9 a
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)' ]7 `* _1 o" x  _- T
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
. p* f/ u1 x' ^8 N- W其实这个可以用php脚本来完成的,很简单的~~呵呵~~~' M/ k# m! P- `( Y* Y1 Z' N
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
% G: c7 [6 @6 h7 ~& d) G==============================================
& E1 ^, B* T- E* a* v" C方法二、
* f/ T+ H1 H" u  A, Q
% Y$ d  H- L# c3 s) I% E2 Z) m
/ g( G) j7 P; a3 d0 @) A* brewriteengine on
! I# T4 A$ G" Q+ A& Drewritecond %{HTTP_HOST} [^.]+\.域名\.com$
0 k- O& b6 T$ p' j  K0 L4 {' G  irewriterule ^(.+) %{HTTP_HOST}$1 [C]
; s7 G3 ?/ U% m4 f# brewriterule ([^.]+)\.域名\.com(.*) /$1$2
" ?+ A4 C' v. @% U1 A$ w; B其他配置文件- w3 h& i7 k7 j- m9 A8 q

1 u# m  o5 h( o4 N- U, n1 @接着在DNS中开设一个泛解析到对应的IP地址。
7 z' H" B. T; W/ F; H; {8 _" _就可以实现下面的方案。. _1 G( v' C! v
% K- [' C% A$ A/ E
域名:domain.com
4 I) K. u# O9 d8 ]' D绝对路径:/home/domain.com/6 ?2 N8 c; s+ e& i. x
www.domain.com 自动解析到 /home/domain.com/www/* H+ x5 [4 `8 `$ z! R
abc.domain.com 自动解析到 /home/domain.com/abc/" \; R; [5 m7 f' r. ?8 A3 R
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹2 {) q( ?8 o# s& ^. H* X
直接建立子域名名称的文件夹即可使用。不需重启apache。

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