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

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:# u/ \' y1 n, i" ?4 ~
+ ^, m2 w0 X6 T6 T+ q
RewriteEngine on
/ c+ `7 G7 O1 h; _3 u/ ~RewriteMap lowercase int:tolower
; y( h( W: K& y1 r. A; j) CRewriteMap vhost txt:/usr/local/etc/apache/vhost.map# s; ?4 X3 ^8 K9 a7 S
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$7 \7 P$ j) t! m. f
RewriteCond ${vhost:%1} ^(/.*)$
( D( E" k& j$ q- yRewriteRule ^/(.*)$ %1/$1
# u' l- |3 G/ s3 ?0 q
9 _" I+ Y1 D8 }! x  x+ ?
& S/ e/ g; O0 \* H其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。& [  `5 ~# f( b" O% p6 Q0 N$ l
然后,在这个所在路径的目录下创建一个文件: vhost.map5 B0 _- c, q& j3 P1 D6 r
内容为:
6 q6 B6 S3 ]" s2 k7 R- _% l! _6 H6 P( M
www.domain.com /usr/local/www/data-dist/domain! C  Y. L% ~* C( ~  ~/ Y* y' g
bbs.domain.com /usr/local/www/data-dist/bbs% m7 H' ~- M3 K9 `1 M( L( f& E
anyname.domain.com /usr/local/www/data-dist/anyname
4 \. A4 `6 c/ c& U4 p6 U) V' v8 E. }. a; R8 ^! a
以上部分都是:” 域名+空格+绝对路径” 的形式。$ }. n5 G4 r3 x* ~2 K" H/ E: A
  `( }0 J2 h) g6 Z8 d+ L8 H
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
0 D- U6 P2 ?9 i' sdomain , bbs , anyname 等等,理论上可以无限。& `. R* B: n8 X: H

9 R1 t; A. N& p9 l这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以: T5 l% r7 D7 T
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
9 T9 s: u& V3 [6 G& B( L* y3 Z' a7 S( J! D9 i
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
# Q7 a/ C* d1 L第二步:打配置文件尾部加上
8 ~( v( h* q5 G* Q2 ?! HRewriteEngine on
! U# r+ u7 \. x, c8 J5 LRewriteMap lowercase int:tolower
7 B: D- E" P8 g  j2 C$ }5 n#定义映像文件
6 ~, f* E3 k( W6 R) G  q  QRewriteMap vhost txt:/apache/vhost/vhost.map
+ e: M& y+ S' N  m5 y2 P' ^0 x#处理变名
" {8 Z. _+ I. W' uRewriteCond %{REQUEST_URI} !^/icons/
/ s5 O/ N" o' ^' JRewriteCond %{REQUEST_URI} !^/cgi-bin/
" J3 [( `0 O' C1 N7 iRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
# ?+ ?; z8 D: U& d这里做基于文件的重新映射
( h3 `% f# x1 L  kRewriteCond ${vhost:%1} ^(/.*)$0 D6 G0 c! u: [. d) ?+ q0 [
RewriteRule ^/(.*)$ %1/$1
; u( i  V* W. S# aRewriteCond %{REQUEST_URI} ^/cgi-bin/
0 T6 T5 ~0 B8 U" v; Q# H  LRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$8 _( g: [* F: O2 t3 n) H
RewriteCond ${vhost:%1} ^(/.*)$% z% n. m6 }, |( C$ ~/ b& w
RewriteRule ^/(.*)$ %1/cgi-bin/$1' y6 Q7 |6 `$ c# m9 ?7 i! O: S. \1 ^
0 s2 q* M: k* l1 C; w, D, I) H
注意:vhost.map文件是域名和空间映像的文件,格式如下: % X$ U; L' c5 M: g3 F" w
www.abc.com /vhostusr/www.abc.com7 U: K, [, ?4 t( c$ Y5 e. T+ K
www.xyz.com /vhostuser/www.xyz.com
) @+ }6 U: G# d3 O+ @www.cccbbbb.net /vhostuser/www.ccbbbb.net8 r1 I" \  v! P8 K" O
.$ R* _! C% J2 ~  |9 _- O6 N+ @+ P
.
- p$ `( ~' m( |) P0 M.
" \; N! |: @* E* g$ a.
% w& O/ B4 [! C7 x(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
4 M6 _2 D/ h* a2 Z: O2 g第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
$ `% ?# M# S  x% ^  ~其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
- E% H' R) ]6 Y2 H. ]6 I注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~' `7 s/ K% @2 l# y) |7 I  ]# O
==============================================
3 y% W1 ~& H& k! o! C% w5 @7 N方法二、. A6 t6 S, ]) L1 J3 O

6 j9 `+ T. ^  h+ {, V' E& i3 `! r+ v0 q7 R* ]& _0 ^
rewriteengine on
( Q" T! V  \' N, C2 `# r3 _rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
# Y1 x/ {& t, t: W  Z  n" \3 arewriterule ^(.+) %{HTTP_HOST}$1 [C]
& c6 n4 |! S4 }4 q- }6 yrewriterule ([^.]+)\.域名\.com(.*) /$1$2
9 Q7 w& t; m: |; S  d- O6 l' B其他配置文件+ G  h# c; J* ~( ^" w

6 Q' X5 U7 c4 ?. I: M6 |接着在DNS中开设一个泛解析到对应的IP地址。) T4 c  ^7 \, I0 H
就可以实现下面的方案。
  i' f  L' R- C
& [' `  I  ^+ Z. F域名:domain.com; W6 I$ P! t4 I4 K
绝对路径:/home/domain.com/
8 V. M' }- u7 L0 n: G0 a% {8 Z4 Z1 Mwww.domain.com 自动解析到 /home/domain.com/www/1 H" P2 p1 Y* R" m9 o  G$ ^
abc.domain.com 自动解析到 /home/domain.com/abc/9 [7 M" m, d# [! t6 y6 |
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
% f; R& m2 g1 ?1 m/ W. `直接建立子域名名称的文件夹即可使用。不需重启apache。

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