返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:6 z  F7 l+ c0 ]& O4 z( F$ v

- U4 U/ R9 H5 d0 [& ~! fRewriteEngine on
/ L% t" b$ E% TRewriteMap lowercase int:tolower$ y9 J3 N1 ~, ~8 F5 o
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
% ?9 g% H. m! @+ S5 f9 H- h. vRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
4 G' }& m! x) {: d, HRewriteCond ${vhost:%1} ^(/.*)$
  h# a$ F" X4 H0 iRewriteRule ^/(.*)$ %1/$1  M6 e. ^( L4 R/ z' A- u) a/ t3 k

& X2 R# w0 U/ ]2 `3 z% \
& n, b8 q  Y& q其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。1 A) Q/ E& n. p3 D5 N
然后,在这个所在路径的目录下创建一个文件: vhost.map) \5 H" N0 h9 b- Y, k
内容为:& W6 Y3 X8 U0 N, L9 O8 ]
; }& }4 \5 \6 J8 W4 s0 Z
www.domain.com /usr/local/www/data-dist/domain
, K! \/ w  G) l2 M; k- \# pbbs.domain.com /usr/local/www/data-dist/bbs% ?$ Z! ]5 x( q
anyname.domain.com /usr/local/www/data-dist/anyname2 y/ u% Y) Q! Z& W6 @7 L
% a. }8 x* m6 H  K2 _
以上部分都是:” 域名+空格+绝对路径” 的形式。- X( f; s1 p; l0 _* }5 W7 X4 i

2 @& }% o3 D8 Y' o: Z最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:; ^& w6 G# H0 H; v% i! |$ D
domain , bbs , anyname 等等,理论上可以无限。: H# q) z! A& J# D7 q
: p  g% C2 f: T8 C2 t- E& D" O& [
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
; i$ @, o* }7 t随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
+ i& g- ~6 u  Z+ S: |# x# O5 P$ M" z
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。% t# E0 y6 D! Y! ]
第二步:打配置文件尾部加上
- @' s5 v+ u( k/ |+ ^& x( ZRewriteEngine on
7 r' Q7 g8 A& W( E- s- TRewriteMap lowercase int:tolower
7 Z5 d# p" b. N( b0 A. V( X#定义映像文件4 z( r2 m8 f- A: U& b, X3 M2 O
RewriteMap vhost txt:/apache/vhost/vhost.map
. v0 I3 I8 d+ P4 {#处理变名
. ?) K+ q  I9 J( p$ L% |RewriteCond %{REQUEST_URI} !^/icons/9 m( F- u; g% f$ @# y1 r- [
RewriteCond %{REQUEST_URI} !^/cgi-bin/- \9 Y9 `) ~2 k. p( g# ^8 e% M: o
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$2 o" E4 z5 g$ ]- ^/ d" V- Q8 w5 e" ]! u
这里做基于文件的重新映射
, S0 Y& ^$ f3 J0 V/ @) oRewriteCond ${vhost:%1} ^(/.*)$: a! X( {0 q& T: q' _* U
RewriteRule ^/(.*)$ %1/$1" X/ Q, |- L: }+ K" x/ Q
RewriteCond %{REQUEST_URI} ^/cgi-bin/
. e, x) f1 w/ Q! W  aRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
- l) k$ W2 l9 [/ V4 a7 QRewriteCond ${vhost:%1} ^(/.*)$7 u  t$ V" H5 B) c" a3 U8 v
RewriteRule ^/(.*)$ %1/cgi-bin/$1
8 \) x: a) f; g7 U' X" n6 O8 m. _
8 }$ N9 f3 F) d  D& [. s" H. f3 l% m注意:vhost.map文件是域名和空间映像的文件,格式如下: * s1 c6 R2 w4 I, U
www.abc.com /vhostusr/www.abc.com
& p2 [# `8 d" T1 cwww.xyz.com /vhostuser/www.xyz.com3 u7 M" f1 d0 R2 d, O& {% X
www.cccbbbb.net /vhostuser/www.ccbbbb.net
0 O( ^, y& M- `: M7 \' _.
  r  D1 V# Z, ]$ J9 B( I4 t# a.
' \3 z: W/ s8 j., ]8 J6 O" F9 C, ?, g4 A: d/ k
.* |. S" p  n( ^; ]
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)$ j4 g7 H) I* _7 S) b
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~+ e) }. _& {+ q
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
" b- x0 f- X1 G- U# |注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
1 K1 g& R( ~5 z6 T==============================================5 t9 q' K& E2 x8 @; f
方法二、+ Q( ?$ [0 K  x1 h9 S+ ~
* M* {* e* i3 K8 w( S+ Y( C8 P. T( p  `
5 S7 `1 H: G6 d8 d
rewriteengine on
- U; n9 j6 Q' j* frewritecond %{HTTP_HOST} [^.]+\.域名\.com$( v+ x& g% r$ {) R' f2 x
rewriterule ^(.+) %{HTTP_HOST}$1 [C]! g" e8 U6 j5 M8 W+ h+ U" j9 b
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
- q9 x; }* X8 D5 r3 v5 `其他配置文件- J* K) z* L- h* C) \% Y1 O' L
0 k7 o7 B6 f9 j3 H2 J
接着在DNS中开设一个泛解析到对应的IP地址。
! A4 R) n6 S; U9 S  C: M% D就可以实现下面的方案。. H: S0 ?7 e& O- P
* i2 B; p% j  t  w! B; Z5 v. q
域名:domain.com" z- n% T$ T# k9 y; L3 I: q
绝对路径:/home/domain.com/" S. q) s% i' r! E% q5 v
www.domain.com 自动解析到 /home/domain.com/www/' B" h8 r, a" f. `: o: k* X2 z
abc.domain.com 自动解析到 /home/domain.com/abc/6 Y* @- P+ n3 n/ f
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
8 }8 ?& l% _/ V, ~- U5 M直接建立子域名名称的文件夹即可使用。不需重启apache。

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