获得本站免费赞助空间请点这里
返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:" G  q7 f$ N, ^/ C

- L3 J) g7 V9 x( x# M7 URewriteEngine on
  n8 y2 \$ F" C$ pRewriteMap lowercase int:tolower. [2 |" b' |, o# j# q) [
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
' @$ g( b6 c, ~( bRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$+ X5 c3 F! [+ r" F7 P! Q
RewriteCond ${vhost:%1} ^(/.*)$
* m, B" C! E7 z. y1 B# r. Q1 o( {RewriteRule ^/(.*)$ %1/$1
  \9 }# G8 C2 V7 y
! R! O- S* f7 s& P, W2 @8 v; _' G! h4 R- D, x: p9 M2 C9 i
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
/ ]0 M( C( _! k9 {3 r" w( o* i然后,在这个所在路径的目录下创建一个文件: vhost.map
% A& a: S7 W# z& Y6 ^内容为:
! V  [' m9 n1 [$ O6 E3 y, f% j* P2 e3 v8 s' ]3 {$ E  v
www.domain.com /usr/local/www/data-dist/domain# z- P1 p4 V; o% }' M7 L) m
bbs.domain.com /usr/local/www/data-dist/bbs
: h5 L- T! s, H& B1 j! q5 kanyname.domain.com /usr/local/www/data-dist/anyname
9 |  z. E! p8 O, J  Y8 q/ n8 E! R" ?# c8 A' T
以上部分都是:” 域名+空格+绝对路径” 的形式。3 k' k1 C3 y7 \
  y' H" a" ?' g3 G! d# L2 t8 c
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:. ~- u, ?( E2 j$ G
domain , bbs , anyname 等等,理论上可以无限。
& Z2 Z; r- N0 c. |/ ^1 Z( A0 U6 K" B6 s' i
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以& b) A, N8 [7 _9 a& N* y
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
- H) e8 l+ z1 Z0 s5 [) c+ _" O& H6 u7 s
4 H7 i1 j# n. ?3 q5 l第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
. O) u/ K; q9 `2 Z第二步:打配置文件尾部加上
% f+ V. E: v. rRewriteEngine on9 h% b* a/ r2 V6 V
RewriteMap lowercase int:tolower; F" P) X* b. q- \0 i* @* l8 z! h" [
#定义映像文件
6 d0 k; U6 a+ ZRewriteMap vhost txt:/apache/vhost/vhost.map, b- J. o. I# H3 M" [. m: I  S( ]
#处理变名. |6 i! y- r6 ]0 E. {
RewriteCond %{REQUEST_URI} !^/icons/
4 R" }8 T% r1 @/ ]RewriteCond %{REQUEST_URI} !^/cgi-bin/
  i$ S  _& F! J6 n4 [. kRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$1 [0 n3 p* J% C" T0 S
这里做基于文件的重新映射7 V( j* a/ }! J
RewriteCond ${vhost:%1} ^(/.*)$
$ C' b8 a4 V) D1 i, RRewriteRule ^/(.*)$ %1/$12 b$ b+ w! i; [0 _: }4 V' }) V
RewriteCond %{REQUEST_URI} ^/cgi-bin/
3 ?+ d; p' m$ t$ P" CRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$' l' Y7 o$ ^3 V5 y& _
RewriteCond ${vhost:%1} ^(/.*)$
9 ~1 ]' `: s$ x, t4 G$ u) wRewriteRule ^/(.*)$ %1/cgi-bin/$1
9 y; U% v) n, {. F1 Q
' t8 M3 u, h3 F; A& F. h4 v2 d! b注意:vhost.map文件是域名和空间映像的文件,格式如下: 
3 R& U9 [2 C: x. c5 N% }8 Dwww.abc.com /vhostusr/www.abc.com
+ I+ q8 ~* v7 l7 T3 kwww.xyz.com /vhostuser/www.xyz.com; l6 {+ P5 L. g/ r2 E5 |1 Y
www.cccbbbb.net /vhostuser/www.ccbbbb.net* m- [% |; ]; I7 g% D- }; f
.
- J. \" F/ F+ o/ `.
+ h: Q! m' q" x; ?: B% C.- r1 L: p2 h1 q5 k  s+ l: q3 P
.. ]9 T7 l0 b/ M, L* I9 K
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)/ r) S: k. h) i! n, H# B) Y  J
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~. p( R5 \; H. H: N) [# P. R  I- T) n
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~# S# Q3 y9 P7 n
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~4 v3 u/ ?; g- d7 j7 Y( \. g5 Z: h
==============================================
+ B. t' l4 d+ G# j* G6 e- l/ l方法二、  X4 p$ ?4 ?# {. M9 m9 u

( i' I' q2 i* o
, ?2 q  K- t4 n/ x& n! F% }5 Drewriteengine on
9 `* ]# ]) y: k2 a' _0 irewritecond %{HTTP_HOST} [^.]+\.域名\.com$3 E. j" ]2 g% I; R+ o: O3 s
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
; f, a3 m; P/ r/ }& z& d0 Xrewriterule ([^.]+)\.域名\.com(.*) /$1$2
3 w. v* ]* [. {# ]其他配置文件* e8 t5 W8 m2 w- l

9 E( D1 _- _2 f+ c接着在DNS中开设一个泛解析到对应的IP地址。' p) \9 B/ n0 r3 b: v% u
就可以实现下面的方案。! j, S5 [4 C2 \0 f
5 k( K0 p6 _5 \9 E9 o0 a
域名:domain.com6 j6 G0 N5 v* G/ w$ |
绝对路径:/home/domain.com/, j1 l  e0 T8 e  Y
www.domain.com 自动解析到 /home/domain.com/www/$ j1 K+ Y, H" n! [2 D+ D4 K1 l( }
abc.domain.com 自动解析到 /home/domain.com/abc/
* F" Z3 u4 z9 A. @0 P7 Z* ?, v( w等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹  A! ^/ m' W  `+ A/ {* F/ s0 z% I
直接建立子域名名称的文件夹即可使用。不需重启apache。

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