返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:  e+ O5 f- I  R4 |
, ?2 o% F9 I. H
RewriteEngine on9 c; L# l; O/ ]: X
RewriteMap lowercase int:tolower; a6 ]# d; g/ _* ?- V
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
  C2 C( @+ }7 ?/ P# \RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$4 g) c8 p0 C/ g+ z  c
RewriteCond ${vhost:%1} ^(/.*)$
) H, s( F8 o  `0 |; u& {6 VRewriteRule ^/(.*)$ %1/$1
: E& m) d3 R  y$ n$ d* f* ]; w( ?0 s# @7 _" C+ J  s) W

6 s0 ~6 V7 y: L' E: B3 w其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
& h8 Q/ l# b1 b7 h6 k8 z& W然后,在这个所在路径的目录下创建一个文件: vhost.map7 B7 I! S& Y: ~4 m- }
内容为:
6 T, Q# X, M3 `2 U: ]( x8 E7 Y: L- h" s5 D1 l
www.domain.com /usr/local/www/data-dist/domain
& W+ N- j5 d; c# I8 zbbs.domain.com /usr/local/www/data-dist/bbs
3 Y) i! B) \, L2 s% S- r9 manyname.domain.com /usr/local/www/data-dist/anyname. P& V* s; s5 P7 [2 h( Y* y$ z

! ?6 h, ]& O: {* p% C/ i以上部分都是:” 域名+空格+绝对路径” 的形式。! b% m& i# m+ f( ^! b& f
2 l- b: D0 I; T  F' P5 D
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
' J8 ~3 X' K- H7 L+ r* F7 l  Jdomain , bbs , anyname 等等,理论上可以无限。% {! E" @& L5 H
, a: l8 M9 @2 Q0 r( A
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
6 X* ~+ `  k4 i" k5 Y/ I随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。6 N* J6 `# {: I5 W( D

2 V- _$ m* `# n5 _' u' K第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。5 d2 s; T" {0 p; v* t
第二步:打配置文件尾部加上1 g: _, X" n( S5 ~4 [3 [  w: T
RewriteEngine on
6 L: Q! r/ V4 s8 ?" yRewriteMap lowercase int:tolower5 Y, Y8 ?7 a/ s/ g) b
#定义映像文件
( h: x' P6 L$ S  QRewriteMap vhost txt:/apache/vhost/vhost.map. a. b; `/ M; f/ A
#处理变名1 G2 i9 _" p# Z2 I/ {+ U% W
RewriteCond %{REQUEST_URI} !^/icons/3 i9 y. [. z% s  K" O2 P% H! u  _
RewriteCond %{REQUEST_URI} !^/cgi-bin/
4 W/ [3 b% X, P9 N' M, bRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$! C, Q5 d4 q8 e+ h/ g7 M
这里做基于文件的重新映射
4 A9 Y/ o: U" L' @RewriteCond ${vhost:%1} ^(/.*)$/ {6 h2 H7 C$ I- H8 K
RewriteRule ^/(.*)$ %1/$17 y3 }4 z2 Z, Z2 [, \
RewriteCond %{REQUEST_URI} ^/cgi-bin/6 I: N7 W& j% [& H& r
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$5 D" Z, B% \$ h5 M/ V
RewriteCond ${vhost:%1} ^(/.*)$/ {8 h" j4 v3 E* a$ V6 S7 r
RewriteRule ^/(.*)$ %1/cgi-bin/$1
7 K4 g9 E0 c5 c4 b7 f, i2 J: u% r: k! y8 }
注意:vhost.map文件是域名和空间映像的文件,格式如下: : k4 r) q+ X0 }6 r+ g
www.abc.com /vhostusr/www.abc.com/ A  S8 {* R6 e) Z
www.xyz.com /vhostuser/www.xyz.com
6 w0 y* {& E" }6 i9 E9 b6 V! [www.cccbbbb.net /vhostuser/www.ccbbbb.net
- b! g. |9 ^9 f& f.
  T) ?, u; i; n$ e' o: I.. ^4 V  B! A% @1 h6 v8 N
.4 m$ w# G* B/ r% q8 L3 r
.6 O/ z6 U) e* Q2 s# `2 W( b5 ^0 W
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)! p/ s' \9 x1 R3 n2 i
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~  w$ a. P1 B' `" j# e' z
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
( R5 ]9 {8 C4 H" a1 F6 A. K& e3 v注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
# C% J! u' j+ }0 K- U==============================================. ?1 n, k2 U5 j4 E
方法二、
5 u! G2 H* ]+ j7 ?' j! u
/ p6 i9 D: b, ^/ m
" G! U" P$ F0 u" y1 drewriteengine on) P5 D3 J, Q1 B( {! p
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
; t* _- {! ?2 `1 S  _2 A# {7 M0 Prewriterule ^(.+) %{HTTP_HOST}$1 [C]
/ }( X1 \# f: b8 A9 h# `rewriterule ([^.]+)\.域名\.com(.*) /$1$2& u$ d! z1 u# h- X7 I; T; ~
其他配置文件
+ J/ z% Z* O& E& `
% z+ q6 X2 H" G6 i接着在DNS中开设一个泛解析到对应的IP地址。
8 i" D, {" v: p4 x' z* `- @就可以实现下面的方案。3 C; E0 C  E" S) Z

7 ~: ]. o- D9 u域名:domain.com
; m% Q6 R7 X% X3 s5 P8 F绝对路径:/home/domain.com/; I3 g/ T5 R* D. G! Z9 W: i
www.domain.com 自动解析到 /home/domain.com/www/* m) l& d% `& Y  q8 u2 W& a
abc.domain.com 自动解析到 /home/domain.com/abc/
8 z" F1 v  c2 f& Y等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹2 Q6 v2 i4 T2 B2 T
直接建立子域名名称的文件夹即可使用。不需重启apache。

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