返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
, s* O0 p" m- E, `0 J9 }# ]$ e  a7 Z4 T- |& p) P
RewriteEngine on
( C) r+ O1 q3 J* `RewriteMap lowercase int:tolower2 ~" }( k' l6 c/ l
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
; c- q2 m: x: h2 P# n/ v# ?RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
; q; i) e4 \# S% l$ }' @( b8 DRewriteCond ${vhost:%1} ^(/.*)$5 N3 A$ r3 ]' _5 B% M' x
RewriteRule ^/(.*)$ %1/$1
4 g' P% P' p! x# b; p! w; t1 \0 b& A( {. K$ {

8 z5 _) l7 A% E( Z其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
! B5 F6 M% k3 E$ l$ F) @+ }然后,在这个所在路径的目录下创建一个文件: vhost.map& q1 V. U/ L- e8 h9 A" [5 Z
内容为:, n5 Q. a- k9 f" }  Y) q
) K, ]# o: v& w
www.domain.com /usr/local/www/data-dist/domain
1 q- E2 ?* q, x3 o( Qbbs.domain.com /usr/local/www/data-dist/bbs
) n3 v2 k$ A/ F$ M! o3 Uanyname.domain.com /usr/local/www/data-dist/anyname( s' j1 F+ l. d
+ F/ D2 p4 [8 N  m8 f8 H8 P$ u
以上部分都是:” 域名+空格+绝对路径” 的形式。5 X9 b6 Y  u# ]* m" w+ d3 E9 F2 ]

! y! P4 M( m* }; T最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
/ t+ t* P% X1 i# k9 Edomain , bbs , anyname 等等,理论上可以无限。
) ^8 h& e) T0 f' ]
$ v( q, w+ D6 Q% \这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以2 p# [7 s- b# c2 S
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。' T5 }6 ~  K* r" L
- L+ M- v% n, X7 V) D$ x% \
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。6 x  {. g* c4 b, Q7 d
第二步:打配置文件尾部加上
6 k# a6 `- |" C0 {( pRewriteEngine on1 T1 w3 t/ G, n9 r3 N
RewriteMap lowercase int:tolower
- |5 _2 {( n4 |  u#定义映像文件0 E' f3 q# N7 ?4 @, d" _4 ^
RewriteMap vhost txt:/apache/vhost/vhost.map) V( ^. c6 x0 `2 W
#处理变名  \8 H+ t% }4 k' ]  h
RewriteCond %{REQUEST_URI} !^/icons/0 H, j7 _4 i% V3 r/ @
RewriteCond %{REQUEST_URI} !^/cgi-bin/
6 F" ~' V+ W6 y( R& R: aRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$) V! y+ r/ T$ P; C5 X$ }+ k3 b, _! ~
这里做基于文件的重新映射
7 ~* U6 U! f; I6 L4 f; WRewriteCond ${vhost:%1} ^(/.*)$
; I, H) t9 C; e/ Z/ l( b& MRewriteRule ^/(.*)$ %1/$1: h3 W; T# f$ E
RewriteCond %{REQUEST_URI} ^/cgi-bin/3 w2 U9 ^3 w( j: u+ B
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
3 g0 Z, K0 a) p( e. s- V) zRewriteCond ${vhost:%1} ^(/.*)$/ x2 ]& A& X3 c# j! c3 i1 @
RewriteRule ^/(.*)$ %1/cgi-bin/$1
3 ]" J7 ]. ]3 T' \* B* v0 A' L; _; P! D/ d- s
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
0 _% F- O, l* w1 o) |7 d9 uwww.abc.com /vhostusr/www.abc.com7 ?7 F, A0 o4 w1 Y: q/ d8 r. i  ?
www.xyz.com /vhostuser/www.xyz.com1 J6 w/ M4 s: f
www.cccbbbb.net /vhostuser/www.ccbbbb.net6 U; W0 f8 r/ [
.' w  ^+ t" V4 i, p% [  C
.
% l7 k. ~' V: K* q, p2 @& W.
8 D- J% K3 _  ?.. }4 `! o# v+ T6 T% h
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)& P& P4 A$ R# E  C
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~# F! z! N2 }6 l: s
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~* k; q; y' q, q, t
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~3 y; f1 j* z! r- C8 X
==============================================
) S* K: G; R. K方法二、$ S, Y& l, I) d2 s+ o

9 T# D! p( i+ J3 x- G+ _% {) x5 Z9 r: E3 j5 l! v0 d
rewriteengine on
* J; w8 v! H. R/ ^  P' z4 |rewritecond %{HTTP_HOST} [^.]+\.域名\.com$# c4 C# C" m  J2 Y7 G' [+ ?% w
rewriterule ^(.+) %{HTTP_HOST}$1 [C]5 Y4 j% s; S: _6 p. _: j3 l' u$ i$ T
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
7 }# K- P! w( b7 [% o/ y其他配置文件
; S, J& f4 ~/ k% Z9 d" r2 C& \
' i/ o. s( \/ q9 y, C接着在DNS中开设一个泛解析到对应的IP地址。
; @5 k7 \1 i. Q" N, o0 x就可以实现下面的方案。7 E5 v! y4 |: N" C9 R( Y
) C' y- u! j, y+ v3 b& R# p
域名:domain.com
' L! A$ F* i5 g+ J& k" @& ~绝对路径:/home/domain.com/
5 n! d8 D6 [7 z  {www.domain.com 自动解析到 /home/domain.com/www/) \4 d0 r# D+ [' V
abc.domain.com 自动解析到 /home/domain.com/abc// w- e, {6 V, R
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
# p! a3 [0 X( |' g0 B$ T6 h直接建立子域名名称的文件夹即可使用。不需重启apache。

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