返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:" g7 d4 L1 ?9 q
& [) @; H0 N( h1 A  z: J" R' j5 _
RewriteEngine on
( k7 }5 E0 `+ ~- _9 e# F' XRewriteMap lowercase int:tolower; Y# _7 [. N; m& @8 k
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map: g4 [  ?/ k, a/ O6 o
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
7 ?0 @3 I; C% E# ^" O4 B6 B7 SRewriteCond ${vhost:%1} ^(/.*)$* v; c; O8 u' S: z9 H5 b
RewriteRule ^/(.*)$ %1/$1& _6 H" r- |* \" ^1 x  q

( n, D( L6 u# H/ r* D; ?* X( @3 ^" x" j8 w% T5 K2 [* R" L7 s
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
0 M$ C* |, Z3 @7 ?2 a* h然后,在这个所在路径的目录下创建一个文件: vhost.map9 p6 r. f* W& W3 d' e
内容为:; u( K: t, T! n. h# Z9 Z7 T

  {3 w+ x* N7 k* |; [7 g. kwww.domain.com /usr/local/www/data-dist/domain
8 a: A1 `, i. g& m/ ^bbs.domain.com /usr/local/www/data-dist/bbs- \( `" X, q; K
anyname.domain.com /usr/local/www/data-dist/anyname
4 o, ^8 |  l# y, G6 v/ f: j. |3 N2 ~& N
以上部分都是:” 域名+空格+绝对路径” 的形式。% O4 u. B5 n1 G! u

5 X5 d3 R+ y+ K1 |8 |; L最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
$ ~$ }+ l* B3 o8 G2 R5 n4 I4 `# ddomain , bbs , anyname 等等,理论上可以无限。# ]( r+ z2 N2 E- g( B, ~  U. g- b/ J
0 d2 i2 C+ M9 u8 [( W, u
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以& ?% Z/ u. l7 [4 b
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。" T/ Q4 t6 s$ O2 K; \

8 K" @  L2 a" ?0 M! ?- I第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
$ [% B, n& P5 W$ d% i3 a2 f第二步:打配置文件尾部加上
% L* w; i9 C4 v# B; `RewriteEngine on
$ N# d: ?. w3 c8 M: B; e8 zRewriteMap lowercase int:tolower
  W6 |3 o0 \/ G7 M2 T#定义映像文件6 O9 @9 h' f# l$ G
RewriteMap vhost txt:/apache/vhost/vhost.map) g2 c* c* T; g8 N( i$ [
#处理变名
8 k5 |, p$ v. ^2 a! X/ J2 pRewriteCond %{REQUEST_URI} !^/icons/1 q" D1 @5 M6 N$ N$ d" _6 m
RewriteCond %{REQUEST_URI} !^/cgi-bin/
: C2 ]% a+ @: E5 Q* U+ _5 \5 G" |RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
+ s" H, A4 N- W. k8 ]2 Z2 d0 u$ p3 U这里做基于文件的重新映射
6 t" l+ Y# v9 l  B& m& vRewriteCond ${vhost:%1} ^(/.*)$: j/ _& S2 }$ b/ O
RewriteRule ^/(.*)$ %1/$11 d7 B) e( ^' k6 z2 W& P# W4 y
RewriteCond %{REQUEST_URI} ^/cgi-bin/8 k& V4 t9 O+ r9 q% Z: c
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
8 i. m* L" w8 [5 ?: B- RRewriteCond ${vhost:%1} ^(/.*)$
1 T  P6 V4 l: E: V1 \0 L6 w% URewriteRule ^/(.*)$ %1/cgi-bin/$14 |; U- `# I" r& j5 z- g! }7 X
0 x. D% G* F+ X/ Z& {! t
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
' `% s% B8 {  D, @8 P2 [5 S: @# hwww.abc.com /vhostusr/www.abc.com
5 w% Y2 {1 [. ]6 Rwww.xyz.com /vhostuser/www.xyz.com( U/ @5 \, N( |9 K7 _( n3 U3 O, K
www.cccbbbb.net /vhostuser/www.ccbbbb.net
2 ~1 O' j7 i6 k( N' R8 f3 s( n" D& ^.
! L3 v6 `3 \  j; N/ f.
, u8 @/ q- j0 B3 S# U.
! L* Z+ |/ |( r# \.
7 F, F- _# ?. W7 C0 a(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
% r; o: i" q* F# S$ @( W7 G0 X第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
. Z1 h1 B9 n1 H7 R$ w" {/ ]# V其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
. f. V5 `5 O9 Q$ t/ l, \! [5 `注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~: C! S2 u- v1 h
==============================================' @5 X) V3 O0 K+ n8 M2 n
方法二、! Y* v7 ]. ]3 D: Z. }* y' w8 V
0 g( y, A4 j3 F

% v- V+ d; D. m% \4 qrewriteengine on1 {5 _1 \: C7 ~/ |, c
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
' T$ i, v7 Z, d/ frewriterule ^(.+) %{HTTP_HOST}$1 [C]2 O8 C  ]! d, }+ x. |
rewriterule ([^.]+)\.域名\.com(.*) /$1$2) T# ~+ M: P/ }5 m- J0 k
其他配置文件
2 w# }) M7 F- j
( `; l3 Y: E$ n5 ~8 F接着在DNS中开设一个泛解析到对应的IP地址。
3 k) k; m" G2 D" l1 o就可以实现下面的方案。
9 h( o2 z6 a' Y* B8 O
$ z$ J# T* g6 Q/ j域名:domain.com$ x- `" c. P( l8 ^1 w9 d
绝对路径:/home/domain.com/
2 ^+ S- p! b" n" W4 s. @. b& I' wwww.domain.com 自动解析到 /home/domain.com/www/$ J5 z2 S1 N. _; ~0 e
abc.domain.com 自动解析到 /home/domain.com/abc/
1 E, Y* |  V$ J% q- w1 [/ u# S  n等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
+ {( e8 J8 M. t' j/ ]直接建立子域名名称的文件夹即可使用。不需重启apache。

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