返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
" C* ]( J5 k3 m& q% j7 y# A3 d! S/ j: t9 V) P
RewriteEngine on# Q3 X" k- E  K
RewriteMap lowercase int:tolower
' V: ~" d! G5 D+ p5 ]RewriteMap vhost txt:/usr/local/etc/apache/vhost.map0 Y3 L* q. A$ b: Q
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$% F9 V7 l9 i0 W* |! ]
RewriteCond ${vhost:%1} ^(/.*)$3 h$ M) Z* n6 [& l# C
RewriteRule ^/(.*)$ %1/$1* L6 Y# ~; d% f5 I
' R* c% s0 M: `. A+ v; a* L
" J8 |: }) q4 b6 t% C5 I2 v
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
% C+ f- C1 d. L# j, z. I然后,在这个所在路径的目录下创建一个文件: vhost.map
/ F% c1 K$ Z0 P! ~内容为:
- {  M' _7 K4 k+ v; E# ]
$ S- t: p( h1 R$ t% T$ Awww.domain.com /usr/local/www/data-dist/domain- |8 G: `' @: ]/ C& L
bbs.domain.com /usr/local/www/data-dist/bbs
5 J% }2 x. O, t/ v8 Kanyname.domain.com /usr/local/www/data-dist/anyname' F4 H; B# }, r) j6 `

9 _5 M# B6 M' C0 P以上部分都是:” 域名+空格+绝对路径” 的形式。- _4 h  T5 i5 ^" M' w
7 {5 j' t; |# m$ V5 N" g2 u9 H4 N
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
; u; _% P5 Q8 e/ mdomain , bbs , anyname 等等,理论上可以无限。
3 ~5 K* H3 t2 I7 V9 c
! v/ b; \. k. q% a' r这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
; {9 q9 `! P  v3 t8 E0 a! J随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
7 f0 A) Y6 z7 {) O: P# O( ^7 f+ I& R7 w8 k0 G0 v
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
: @- L: K; D& ?; ^( a第二步:打配置文件尾部加上- P2 D2 n: J  [$ @5 S2 F& i- g* N
RewriteEngine on- o; r: G; \+ d/ R  h3 _' F, z
RewriteMap lowercase int:tolower7 q, C9 w4 ?: u( e4 Y- |
#定义映像文件" |+ _! @/ `" f( ?
RewriteMap vhost txt:/apache/vhost/vhost.map. e3 a/ J5 B8 u4 Y% C' }; x
#处理变名1 v6 t$ H  }" N: I7 C+ G
RewriteCond %{REQUEST_URI} !^/icons/
+ A( H. B% U1 d3 Q" l1 ZRewriteCond %{REQUEST_URI} !^/cgi-bin/
2 ]+ u! @7 T0 a( [+ ?/ i/ p  _2 uRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
; H3 D" V7 j. c5 V+ s7 y  g这里做基于文件的重新映射( `. ]5 r  |* V3 P& U: t
RewriteCond ${vhost:%1} ^(/.*)$9 ]9 \0 c0 M1 ^1 i
RewriteRule ^/(.*)$ %1/$1
# c3 t# Z4 ^) j8 Z9 sRewriteCond %{REQUEST_URI} ^/cgi-bin/
) s1 z/ }' ^+ U% K9 r6 L( i" g: P. yRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
' _+ j4 b$ b6 H) y5 O: [, aRewriteCond ${vhost:%1} ^(/.*)$% J  Q& I* V$ E* A8 n5 A9 F
RewriteRule ^/(.*)$ %1/cgi-bin/$1+ G& X2 n. g  I6 q8 I
9 m$ o( f3 w* A% @, I& Z' F) f
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
% F. l7 J8 c7 e* `/ M* y7 ewww.abc.com /vhostusr/www.abc.com
2 Z" n$ c4 B% c  _& ^7 {' b& `' M; fwww.xyz.com /vhostuser/www.xyz.com7 e& i1 ?, n. h
www.cccbbbb.net /vhostuser/www.ccbbbb.net" O4 O% R/ [8 j8 g( E3 y" F8 X* {
.
3 ]% h) a8 W2 {" G.
4 m  s" i" y6 }0 w, [, ]% T4 v.
+ a  K; H) g" m.4 Z: p5 E  N2 g# |
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
% c* b1 i3 t. R) ]- z9 }. B第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
: _8 D8 P! I4 W- T# \其实这个可以用php脚本来完成的,很简单的~~呵呵~~~/ ~" j! b! m+ M
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~1 Z; g) }$ n8 Q0 V: f
==============================================
+ j) m$ K* z  X4 W) v方法二、
! f! |. i1 H7 H3 [: c& z* m' e1 R# r" `1 c$ g
  t3 W; W9 S1 Q- H. l5 ]* H
rewriteengine on
% ^- y% {& u* G8 Wrewritecond %{HTTP_HOST} [^.]+\.域名\.com$( t9 d8 \% k# G+ u7 F2 t
rewriterule ^(.+) %{HTTP_HOST}$1 [C]! E. x3 o0 g% o' c9 O3 J& @
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
3 z; ]2 C8 t" L# t/ j' p其他配置文件/ J! T; A; O& F$ A
. }- M; o( r& B3 T7 t0 D
接着在DNS中开设一个泛解析到对应的IP地址。
5 ]3 H! }$ v' S7 t就可以实现下面的方案。
6 b0 j4 e4 y2 ]. f' E
5 L3 y7 B: m' K- f3 z: }域名:domain.com
0 _8 O4 V, o! O% h+ D8 @1 k绝对路径:/home/domain.com/( |0 K6 _4 _, l" \3 U2 L# o
www.domain.com 自动解析到 /home/domain.com/www/
  k3 V: R1 u/ t+ g4 p- k( yabc.domain.com 自动解析到 /home/domain.com/abc/
  ?% H- }9 V. M. s等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
7 q' ]; D& p4 b直接建立子域名名称的文件夹即可使用。不需重启apache。

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