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

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
  V2 ^/ A% F  T# E- [% U6 H+ F8 T+ q& @, `  s) @1 M1 s0 c
RewriteEngine on8 A5 l8 \  m+ r  l/ C# L" \, X
RewriteMap lowercase int:tolower
$ m+ S. Y* d2 [( R" {5 \RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
4 e+ R, X3 K6 u! t3 zRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
3 X( k) o* f$ lRewriteCond ${vhost:%1} ^(/.*)$
8 z( Q8 m: D) L" ^RewriteRule ^/(.*)$ %1/$1
. o3 w* k3 ?1 \4 o- `) c; X: w4 C0 M$ |0 \
* V  N$ p* m5 d3 w
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
+ V% l- X% M0 n5 h& ~' {& n. N然后,在这个所在路径的目录下创建一个文件: vhost.map
' I5 g) w) J. T9 v- T内容为:
. |4 _% c; c2 ~! p4 G
! Z5 S& |' U7 y$ j" o5 mwww.domain.com /usr/local/www/data-dist/domain9 i' o" d( d4 B4 I- R, W6 h
bbs.domain.com /usr/local/www/data-dist/bbs- W  L/ d9 M  T0 }' T: }4 W
anyname.domain.com /usr/local/www/data-dist/anyname
5 s6 |+ |4 Z' i2 V* K3 q9 ]2 ?( G: d. u6 x5 ^8 c" \1 Z
以上部分都是:” 域名+空格+绝对路径” 的形式。
& K+ {6 H" c  q6 S
& x+ a  O9 L3 H( n+ B7 @' @5 V最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:7 o6 u% y4 m  n4 R
domain , bbs , anyname 等等,理论上可以无限。# j% T& o6 A( i- p9 f' b
% A% g" j3 h5 T
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以' E4 O0 L7 Q( ^: l6 m$ i
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。9 p3 X1 z$ X/ ]# Y6 l" `
. n; [# _9 K3 P9 y, J" e7 |
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
) ^9 d( n6 ?7 R# j! A第二步:打配置文件尾部加上
* d, x. t  V0 dRewriteEngine on0 `" h( K* J: u* [
RewriteMap lowercase int:tolower
  {. J- U4 T  J" l7 G#定义映像文件
0 i3 N/ t5 z3 g1 ], YRewriteMap vhost txt:/apache/vhost/vhost.map- I+ \5 @& j* I: t. P- I3 f
#处理变名& P8 t# K* n; u/ e! y# I$ u
RewriteCond %{REQUEST_URI} !^/icons/
* u% d) ^7 a  b9 J3 Y% D( m- GRewriteCond %{REQUEST_URI} !^/cgi-bin/
  z9 B. Q8 u9 \, d5 f: ]# ERewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$+ k7 s8 q0 l& {/ F& m
这里做基于文件的重新映射
; p; ?" U: H. R/ N. u2 @; l. qRewriteCond ${vhost:%1} ^(/.*)$" I& ~2 m& g/ ]# @
RewriteRule ^/(.*)$ %1/$1' p& i0 @9 |1 z9 [
RewriteCond %{REQUEST_URI} ^/cgi-bin/5 U& n$ }9 _8 {4 k' t  _: G
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$1 l0 }  U, b& F* W# q
RewriteCond ${vhost:%1} ^(/.*)$
1 C# L, ~9 G$ B: n! ~/ `RewriteRule ^/(.*)$ %1/cgi-bin/$13 w5 S6 N( t% Q4 I
% a# t' }7 \! \+ U3 {2 x
注意:vhost.map文件是域名和空间映像的文件,格式如下: 6 W, {9 g: a& o, l
www.abc.com /vhostusr/www.abc.com0 U1 L; Z5 _- @: Y1 d) _
www.xyz.com /vhostuser/www.xyz.com( W% t8 o2 J' R/ m' v0 c
www.cccbbbb.net /vhostuser/www.ccbbbb.net" G# y3 y2 T4 Z
.
" p& f% L& t8 r.# }; A" X- ^* s& X, E
.
+ q8 |' a+ q% w.
& S$ p' O8 L4 n* D0 n% N/ @(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
+ Z3 K* l; j# P1 }  g第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
/ v5 O, _& t0 a, Y) n/ x( i$ z其实这个可以用php脚本来完成的,很简单的~~呵呵~~~- y/ ?8 V7 ]) T% e% d
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
0 F. K+ M4 n* s( H6 o==============================================
, I( }6 Y9 V$ d5 G方法二、
! `5 x% A; }( t. j
# q- D7 S4 j7 d# z* ]+ T% G8 B6 N* \* ~$ u7 Z: x8 q7 O: d
rewriteengine on) I8 S- W8 f6 i% R3 o+ s" i: o5 i$ i
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
5 K  H: u6 i- }9 ^3 X. T! x( `rewriterule ^(.+) %{HTTP_HOST}$1 [C]- {8 T  t% [/ ], H. R' z
rewriterule ([^.]+)\.域名\.com(.*) /$1$2- Z/ r6 o! G, U( q% {2 o3 L
其他配置文件) m/ G/ m, |% i
/ J2 N9 ?! f3 c
接着在DNS中开设一个泛解析到对应的IP地址。- M1 l( x" q) P7 H- i3 V# v
就可以实现下面的方案。
' @  w; w5 }: k6 e: {5 P* V- b: `; Q( f9 p, u8 N0 w% H, m
域名:domain.com, o6 K8 }& n# W" U4 Y- G
绝对路径:/home/domain.com/  |- k% ~0 H9 B0 ^) E
www.domain.com 自动解析到 /home/domain.com/www/
) D5 Z+ x. {7 b1 D! B4 Y% s9 tabc.domain.com 自动解析到 /home/domain.com/abc/, d4 @  E, b6 N; |9 F: B
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
$ y( C5 B- W7 i* X直接建立子域名名称的文件夹即可使用。不需重启apache。

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