返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:$ O3 I" T1 y8 v2 U$ X' ~4 g
5 ^" y  w& v# l) ?/ {
RewriteEngine on0 K' O$ P$ k: D5 O* d9 v0 i
RewriteMap lowercase int:tolower
; P5 Z# g- w( o+ i+ B# g* S# SRewriteMap vhost txt:/usr/local/etc/apache/vhost.map0 n! [0 ?  }4 p' \0 C/ e7 }8 t
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$, Y* M* l" y8 j/ ]" i! @2 e$ m
RewriteCond ${vhost:%1} ^(/.*)$
# n) C+ f6 P: ?RewriteRule ^/(.*)$ %1/$1. `) C9 ~  @: b, E4 {$ x

0 s- x$ P; L! k8 \0 @3 p' f8 U4 l1 E' }+ K+ L6 V' i
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
) S; C  `# b# b然后,在这个所在路径的目录下创建一个文件: vhost.map5 a4 l" A! x9 o. `8 a
内容为:
/ z4 F1 B4 T) n$ p3 c
% k) z) ~. p3 x, [1 o7 z2 s4 V  xwww.domain.com /usr/local/www/data-dist/domain
+ p' O4 h0 F' d! z% p6 G0 Z8 ebbs.domain.com /usr/local/www/data-dist/bbs
" {" p: z1 z( H  L) t- Panyname.domain.com /usr/local/www/data-dist/anyname
$ V/ z6 t# F6 I  U/ ^& c" ?, J0 J" l; S5 n
以上部分都是:” 域名+空格+绝对路径” 的形式。
6 K  H; [, b. k3 n6 u6 A
* c! X, {3 ^5 G" \最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:3 ?. K, F# |. u; g" s
domain , bbs , anyname 等等,理论上可以无限。
# j# z4 @' r. j. ~9 \9 f/ w# }8 @* f3 A: x* q7 L3 m3 t5 k
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
5 C) {, o3 `4 ]. A5 S! g$ V. g随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。- Z6 B" W9 I; ?+ W

' G  \1 z2 V! D- w第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。5 k3 s8 J! M9 F6 i  [) `2 l  w
第二步:打配置文件尾部加上
* D: h0 y4 ?$ a3 ]RewriteEngine on4 b9 X. M+ P/ n& }3 d  \3 R4 N  _
RewriteMap lowercase int:tolower
. \. E  \) b& n6 ^#定义映像文件
+ t# {, J  w" i8 H' r+ N* SRewriteMap vhost txt:/apache/vhost/vhost.map
  d. @7 D5 |& c4 q#处理变名1 n* _. Y# L# G
RewriteCond %{REQUEST_URI} !^/icons/+ b; g: O4 _# [9 \0 E0 U
RewriteCond %{REQUEST_URI} !^/cgi-bin/
* n6 I* F# a" K4 Z2 t1 ]RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
& L' z3 h4 d, K8 _4 Z这里做基于文件的重新映射, L+ Y& [) j) N$ C$ F- B
RewriteCond ${vhost:%1} ^(/.*)$4 n+ J1 e, {  a/ ^# \
RewriteRule ^/(.*)$ %1/$1; @6 R2 k4 |4 L+ e- x8 j
RewriteCond %{REQUEST_URI} ^/cgi-bin/
: E/ t2 d6 j, f+ w( h1 ?6 o3 d& ^7 zRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$7 O7 c* h# L, r7 a% w4 D7 L  z  I
RewriteCond ${vhost:%1} ^(/.*)$$ C8 v" D9 ?6 I! g0 ?- F6 H
RewriteRule ^/(.*)$ %1/cgi-bin/$1
2 z) C% W. z) ?  b: f5 @+ ~# G4 L
& S. X% {1 L1 r& ?; q- R1 `# a注意:vhost.map文件是域名和空间映像的文件,格式如下: * o. v5 N4 V0 J  `
www.abc.com /vhostusr/www.abc.com8 G' D4 y- l3 f! J0 C: S
www.xyz.com /vhostuser/www.xyz.com
/ K7 R  \; @  N, z. T* e! Kwww.cccbbbb.net /vhostuser/www.ccbbbb.net
" o9 c$ T1 A0 D6 Y5 I, Z.
2 D% [1 y' s% A0 d3 B) @.
4 {2 K  c4 w# \.
. b) Y8 c- @% |: |.& o  J. q; N2 u6 u: Q
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
. U/ D: L0 N" B; }4 F# r6 u, b第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~0 B3 A5 r' d0 q% P' x- h0 z* y4 X( d
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
$ B/ i, B2 \7 r( s# `注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~" ^3 j9 V* ?9 z  `9 P( s
==============================================$ S0 Y$ t1 W( l+ m/ ]5 D5 Y
方法二、; m; k' `+ ^/ o" I

- D$ S) z& H. Z' M, a% I) D; l& O8 z. ?) y9 C$ q0 P; K' X
rewriteengine on9 i2 n, r' L! s4 u
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$% x6 V/ @9 }& J/ Z
rewriterule ^(.+) %{HTTP_HOST}$1 [C]2 U: N- L: H* y- A
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
3 K7 v  e3 V# P) l4 c/ ?+ W9 j# e% B% l其他配置文件( ~( _) |% W) c
( K8 r& v! x6 V
接着在DNS中开设一个泛解析到对应的IP地址。$ E. S, l% O/ z: S* ?5 ^. M& E
就可以实现下面的方案。
, L! P2 x7 M8 s6 @! L, e( b1 N
/ _4 Q5 O* Q4 S6 P2 `  U域名:domain.com
( x9 c3 h1 e* G+ h5 ?绝对路径:/home/domain.com/
7 N% ^# x# |, E: |# qwww.domain.com 自动解析到 /home/domain.com/www/
) C7 f5 M6 g$ |5 _abc.domain.com 自动解析到 /home/domain.com/abc/4 |5 L! a4 j& W( x) b
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
  w# _, p+ y6 h! W3 A8 S2 [' z+ H直接建立子域名名称的文件夹即可使用。不需重启apache。

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