返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
9 x, I5 |% ~6 p
# z) w) ?$ p" c+ aRewriteEngine on) y' ]) Q; g% K' g# ?$ Y
RewriteMap lowercase int:tolower2 I; A3 j& U$ r
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map  s# Z0 Z6 \1 F
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
2 B' L: N3 r% E9 x9 n! ORewriteCond ${vhost:%1} ^(/.*)$
6 ]( \' u; ]9 S. p! U8 T4 [! h; G; N3 Z% ~RewriteRule ^/(.*)$ %1/$1& r$ }0 }' F) A& D$ F' M" a3 e

4 ?1 l8 b" {. ]- }
$ l/ M, u5 L/ `0 F其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
: W! }/ Q9 r) k8 U9 c2 E然后,在这个所在路径的目录下创建一个文件: vhost.map' B5 [3 B: S- |! E2 \
内容为:+ @; o! y& e% I& Y( V
, ?8 @; q' k& i& B$ i" J  o" n! l
www.domain.com /usr/local/www/data-dist/domain
/ K. Q4 B( ~0 h2 b3 K" Q3 X' Dbbs.domain.com /usr/local/www/data-dist/bbs
+ C! f# C3 }( A  _; w8 n. oanyname.domain.com /usr/local/www/data-dist/anyname, x+ t# X. P( K6 D

0 `# R# p! S+ }以上部分都是:” 域名+空格+绝对路径” 的形式。
5 R* U9 {$ P/ b( @7 O, a: w
3 k8 m# f) y# ?# v2 U2 h- m最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:/ p# W9 ?6 }9 `5 n+ H% |. `
domain , bbs , anyname 等等,理论上可以无限。
* L( L8 N- _8 T5 [
" v) d) o  J/ G4 Y# ~这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
  W) l, ?- f+ C随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。9 [. K7 o# K/ n' ?; d
/ h1 {1 K/ m' v8 ~3 P. X
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。: ^7 B$ _3 z  M' o6 e  N( l5 V
第二步:打配置文件尾部加上
5 o4 T; Z( f7 o7 X- vRewriteEngine on
2 N& ^* t8 ]2 dRewriteMap lowercase int:tolower
) h" Q: V2 T" @% w( M#定义映像文件4 w8 m" ^; p6 |
RewriteMap vhost txt:/apache/vhost/vhost.map* H7 Y% a% f+ C4 V
#处理变名
" B/ e7 q" z# ]6 p/ z0 D7 k8 ]7 ZRewriteCond %{REQUEST_URI} !^/icons/
; m7 h+ O" t) z0 E7 n$ CRewriteCond %{REQUEST_URI} !^/cgi-bin/& }2 T1 M8 f# x. @9 v
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
2 A) r- o1 b0 s* u这里做基于文件的重新映射/ ~7 X: `% j9 a2 I
RewriteCond ${vhost:%1} ^(/.*)$
7 q3 g) a8 w& @, \5 Q8 J: uRewriteRule ^/(.*)$ %1/$1& l' n1 J! Y: Q, ~
RewriteCond %{REQUEST_URI} ^/cgi-bin/
* u, X5 K$ c  V  ZRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$( ?- W6 Q3 h/ d* t& Q3 v% g9 k
RewriteCond ${vhost:%1} ^(/.*)$7 {/ P1 H) |  n: w# b2 g9 b2 ]0 |
RewriteRule ^/(.*)$ %1/cgi-bin/$1' k* r8 a8 @2 e9 B
- D3 ^! V' C. h! Z0 x4 C. y# y& h
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
3 T% W5 T- y; Ewww.abc.com /vhostusr/www.abc.com
( Z* Y, l$ h% i0 [+ {1 ~) y1 \www.xyz.com /vhostuser/www.xyz.com* Z4 i+ q1 V- \8 y7 W  j& t
www.cccbbbb.net /vhostuser/www.ccbbbb.net
( o/ {1 h8 v* k" k* c# r+ F' ~# b- L.% ?" q' [9 }: e0 n
.
6 Q$ |0 O/ J7 Y$ k4 J.
& A; D! [& G2 t6 q3 D+ F2 ].
3 [! j2 m! e" U(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
. Z- z+ k5 s3 N0 \5 R第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~* x2 z! b. E9 S2 ]* d; O2 h
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~1 w" K7 O$ N) u4 W& |# U& L
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~( _- [# G% y- O* [0 Z, R2 k
==============================================) u, R% B; W" x. |) Y
方法二、
) K% @7 }/ w1 E# I  U3 ?3 C5 F; l7 d. e/ P! q- ?& l

! t6 {, v9 v$ w  L( jrewriteengine on2 h4 q; v* I3 B2 ?* b  k, K
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$) p# p: t$ o3 G: x1 i' h+ Y  Q
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
0 }7 x6 z* t+ R7 F1 p# _& X  Zrewriterule ([^.]+)\.域名\.com(.*) /$1$2
5 U+ i: k. Y8 s: }8 \其他配置文件, t% W3 F8 }( U* g; b5 K

* k) g1 l* p& z4 n% H接着在DNS中开设一个泛解析到对应的IP地址。0 G4 C! s% r4 A2 y. O, y& a& A
就可以实现下面的方案。: b5 q7 l7 }' H0 i

6 `$ F' K3 V: L' n/ ?: C0 s域名:domain.com6 K* U& |, T- w1 u2 `1 s% P. }
绝对路径:/home/domain.com/- b% f9 d0 n/ L8 `
www.domain.com 自动解析到 /home/domain.com/www/0 f$ v! M  p. S) d
abc.domain.com 自动解析到 /home/domain.com/abc/
, D# ?9 N% m8 S+ ]% U& y# g等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹. i' q8 c: d: {2 r) S# |
直接建立子域名名称的文件夹即可使用。不需重启apache。

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