返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:3 H7 T% \6 ]% j- I! r! H

1 R# \4 P- q6 ?8 D# \4 ~% PRewriteEngine on8 T3 z  m* Y" O+ b$ `
RewriteMap lowercase int:tolower$ a- a- t7 s) l) A0 E% z  P4 X
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map$ h% B' z! F# {
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
! C# V, c) p, D) i3 SRewriteCond ${vhost:%1} ^(/.*)$
: {) S7 x; a: ?9 v/ Z) qRewriteRule ^/(.*)$ %1/$1' m# k2 O! ~8 h6 Y; C

+ ^3 y' e8 D. H+ g) `. c9 \+ {1 a8 k+ f8 z
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
8 `, X6 p: Z/ b, D7 E5 C然后,在这个所在路径的目录下创建一个文件: vhost.map
$ y+ s* H2 s. s7 d$ O+ V) I2 g内容为:
& R4 p7 p7 N* B
9 O0 M) Z- S% @2 M4 Gwww.domain.com /usr/local/www/data-dist/domain
( v. `7 L' d" k+ Q8 F  |7 ]bbs.domain.com /usr/local/www/data-dist/bbs* ^! U% H! Q2 b2 o5 d7 `
anyname.domain.com /usr/local/www/data-dist/anyname+ a# `. G, M4 |1 A, I( b3 ]

8 Q/ I, [) \4 j: C+ ~3 e+ H以上部分都是:” 域名+空格+绝对路径” 的形式。
* z& s4 A  z. ~, [- P, {: W# u! S  ]
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
9 C1 x  @- H+ [3 C# B: J3 C, X. vdomain , bbs , anyname 等等,理论上可以无限。5 m; k, b0 W' A0 H4 _4 _2 v
. X  @, ^$ l2 [2 s3 {5 k$ v9 o. L# v
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
8 t# Q( L$ G% Q* H; ?随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。2 g: F( j. e! o/ `$ t
4 p0 C- a; S) c: j# {
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。6 `4 X5 A$ y1 V  l& s& n
第二步:打配置文件尾部加上+ |( F* x' y) q$ |! K8 x
RewriteEngine on
, ?1 @. B: g( o! HRewriteMap lowercase int:tolower; w+ V, T6 ]/ n. \* z0 h
#定义映像文件4 X& U, Z% W5 A& |* l
RewriteMap vhost txt:/apache/vhost/vhost.map& s5 t, j+ \$ X! p8 }4 y
#处理变名
% @/ k% L5 S! B+ W, }& dRewriteCond %{REQUEST_URI} !^/icons/
6 o" j& n0 u3 V5 z' A* aRewriteCond %{REQUEST_URI} !^/cgi-bin/9 O" U  ^4 z- q( r# z2 e4 |
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$9 J  L0 z$ D! n! g+ c
这里做基于文件的重新映射
! ^$ ]6 X! S. T" H: KRewriteCond ${vhost:%1} ^(/.*)$) f( i# {! q( n- W& @4 k
RewriteRule ^/(.*)$ %1/$1
$ ]; `3 E0 }! [) d  }3 k; E0 qRewriteCond %{REQUEST_URI} ^/cgi-bin/
8 @, u/ Y# l9 f2 V2 Z6 h+ L8 `4 gRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
4 z$ L" @3 H5 a$ N. ], q2 LRewriteCond ${vhost:%1} ^(/.*)$7 M, H. l, z' ^' W( |
RewriteRule ^/(.*)$ %1/cgi-bin/$1* R/ s9 Y( o1 ^) G5 Q- w! z
, J- k+ H) m: C: M9 Y; T
注意:vhost.map文件是域名和空间映像的文件,格式如下: # Z" M9 w+ P+ P' J' W# Z
www.abc.com /vhostusr/www.abc.com" N; Y" O, E, I
www.xyz.com /vhostuser/www.xyz.com; r& A0 c  N4 W0 y+ }  L8 W
www.cccbbbb.net /vhostuser/www.ccbbbb.net
2 n5 E, _5 n: O1 `/ b% h5 {.
/ R' r# J- Q% c- e3 h  r3 b- X2 x.
" p  a9 T/ F# }# x2 T., z: ?9 q7 g: @& v8 C$ s
.
/ f! F2 A& V  ?% [2 f(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
7 V) n/ v8 ^- R9 \! ^8 ?9 g/ G第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~1 _8 N; |( R  }# ~
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
3 p3 i, X4 Q! y# A# c注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~5 k9 C" U1 C1 S+ G0 F7 Q
==============================================5 I" R/ g+ g. {4 Y1 U* W  D' I
方法二、& u( O( c1 ?7 P' t6 o/ t) F
# ?4 f( G6 ~: @5 v' i2 b2 S

: S. T+ ~; Z4 a: L9 _! ?# Srewriteengine on2 S! m- m/ T* P: `
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$. O( W! C& b# P# C  V1 x7 W) j
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
* s+ q+ w8 |5 @9 arewriterule ([^.]+)\.域名\.com(.*) /$1$2! p8 Z7 O6 m% d. O
其他配置文件
  h% c9 _7 Q$ l
7 J( L5 n! d/ \' b接着在DNS中开设一个泛解析到对应的IP地址。: P9 Y( l0 i! i! h8 p9 s
就可以实现下面的方案。
: w8 l" b. A" [" d) `7 G0 h" f
+ c/ s) ]' H% |) z, E) q& W域名:domain.com
. N2 R. v& \# E* h0 e4 i绝对路径:/home/domain.com/
  \4 {7 j/ x* i& [www.domain.com 自动解析到 /home/domain.com/www/. p4 J# s- B  n' N3 G  x! F
abc.domain.com 自动解析到 /home/domain.com/abc/4 [/ U$ F- J( ?; P5 P7 y( h# w
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
( t8 X6 C' K+ L; {- ?直接建立子域名名称的文件夹即可使用。不需重启apache。

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