返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
! D; A# H3 j) y1 V2 Z+ t/ B  P$ i( \% @7 D% h6 s1 l* |. h/ r  o
RewriteEngine on) Z* z* H; k7 T& M* r: w8 y- ?
RewriteMap lowercase int:tolower9 L0 Q- `- u2 _( Q+ i+ u9 Q
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map  S' X: z; m1 f, F
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$1 x  B( L: G; g: h6 S6 r$ @9 J
RewriteCond ${vhost:%1} ^(/.*)$' N0 S" ?) ?4 v& Q
RewriteRule ^/(.*)$ %1/$1: u2 I; U, ~& H8 Q$ n$ p

+ Z* k/ j4 O2 F. K4 }2 ?/ ~) o1 N, c9 G9 s
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
- R. v) q4 a) U: n/ h' j. @然后,在这个所在路径的目录下创建一个文件: vhost.map
7 z6 b3 _: [2 L内容为:
, [( P% Y( p" W  Y/ n# @8 w2 e0 @" z  y9 P+ n, F- T
www.domain.com /usr/local/www/data-dist/domain
, o/ Q! H0 G5 Vbbs.domain.com /usr/local/www/data-dist/bbs2 @9 g4 Q: r5 H3 R( @4 f4 b
anyname.domain.com /usr/local/www/data-dist/anyname0 ~# t( ?, ^9 \; x. ^& N0 {
# T# |% H' n3 l/ c# S% G5 ]( s% n5 B, |
以上部分都是:” 域名+空格+绝对路径” 的形式。: m  {' t  U" k$ ]7 {8 ~/ X

: L4 u% [. H5 s. c7 M5 w! }) Z最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:1 J  t& j: h: K  o; t: v" e
domain , bbs , anyname 等等,理论上可以无限。, G6 O( c9 _- Q/ N. c

6 z) R2 E8 `! x" ^# _$ ?# O这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以! f* L$ v! ]9 ~- y/ k' Y* ]: g
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
, c- y. B0 i3 t! v' L1 d; Y+ T
/ i, Z% b* X& p2 M* j+ Z& ~第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。" G% N. Q1 S$ u# ~- E5 f! u) P$ L
第二步:打配置文件尾部加上
0 d- P0 k( w+ ^6 `" ~RewriteEngine on; ~/ ]( K( x+ S( ^* s2 o; S  _3 I9 |
RewriteMap lowercase int:tolower
6 U. n2 l% i: e, e/ `' {#定义映像文件: c: N( E2 K  D: n* {% d0 B3 w
RewriteMap vhost txt:/apache/vhost/vhost.map
1 _* u& U1 M# ~% F* G) l#处理变名5 U  o/ m1 U0 K
RewriteCond %{REQUEST_URI} !^/icons/
9 m1 c) C# o/ x2 w8 U. @+ D( gRewriteCond %{REQUEST_URI} !^/cgi-bin/* v# ^9 E2 _. A
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
6 S4 D( b' r1 p2 ~- H3 T8 Q$ D这里做基于文件的重新映射
- y/ }+ V% A* ?0 C  V. GRewriteCond ${vhost:%1} ^(/.*)$# L9 g+ Z# c! M+ V
RewriteRule ^/(.*)$ %1/$1# T2 t9 e& J- F7 n5 X
RewriteCond %{REQUEST_URI} ^/cgi-bin/
4 B# f2 L6 u0 o) {  yRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
3 e% a: t- g( RRewriteCond ${vhost:%1} ^(/.*)$
$ d# {- b  @; I& ]RewriteRule ^/(.*)$ %1/cgi-bin/$1
. V3 O7 y% |; O1 o+ y( Y2 C: Y3 J0 N2 y5 a  i
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
4 B2 @0 c) M0 L: Bwww.abc.com /vhostusr/www.abc.com* N  X1 |5 R+ w8 ?1 w; g3 Y; d
www.xyz.com /vhostuser/www.xyz.com" P: l* c2 d% u6 f
www.cccbbbb.net /vhostuser/www.ccbbbb.net" I/ @1 G8 K# D% S
.
3 H: y3 {( n6 ~! [. S.
- ~+ U8 K, \3 m8 i# `' n- }# n0 E- T0 a.
! K+ t7 q5 s7 T7 m  q% P7 M.
3 [  A: U8 f2 Y2 F# @(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)) U+ {5 A0 W5 _
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~: m' O" A  }$ t
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
9 T( G: T; c# {. x; Y+ U* `' o注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
5 U* H! x' ?1 F5 x- F* f==============================================
* d  T% ^+ O0 a3 V! o% q) t7 ?方法二、
; c  k0 {8 R+ j# y! W% E6 V3 \6 c4 o' h3 P; h5 v
( H0 E  T4 R4 n  f
rewriteengine on; W8 f' [2 \- f; Z( F5 a2 h" A$ k
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
2 W& ~2 T; A9 }2 F8 `rewriterule ^(.+) %{HTTP_HOST}$1 [C]6 A% ]$ g- G- y
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
) v9 {- N9 n' q& B2 k/ J$ ?) w8 n其他配置文件
* J0 ]8 |# E& a+ @" a, R$ `; P* B6 f& @. i4 [
接着在DNS中开设一个泛解析到对应的IP地址。
7 B$ a2 w. P8 c% r就可以实现下面的方案。2 R4 J% K' v7 _; n4 f
% d9 C' ^4 Z: [* L: d9 A) [
域名:domain.com6 H1 |2 G/ E3 ~
绝对路径:/home/domain.com/
7 S- K; k, d- V" cwww.domain.com 自动解析到 /home/domain.com/www/1 g- T" h3 r2 w+ v+ a# H9 j
abc.domain.com 自动解析到 /home/domain.com/abc/# |: y3 _. F- m4 A' s  p! h) f
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
# l9 n- N3 U! ~" L0 Q直接建立子域名名称的文件夹即可使用。不需重启apache。

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