|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14389
- 金币
- 2480
- 威望
- 1647
- 贡献
- 1428
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:. _8 c+ |0 e7 \
# O1 D1 @. C/ h- W! N% L- @
RewriteEngine on
; b1 m, m3 I1 y+ Q8 RRewriteMap lowercase int:tolower
: o+ L# `, |' S( v8 j+ ZRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
! Q; I. \2 {4 k4 H9 t# @, [* @RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
5 Q( j: N; P7 H: T2 LRewriteCond ${vhost:%1} ^(/.*)$% j' m3 i* g! O+ q6 Q
RewriteRule ^/(.*)$ %1/$1
( i- ]: T, S+ m3 _& O. Z4 C$ B2 z9 e/ j2 @. g2 b
& z7 ?3 x1 g; N9 n4 Y. {# ?9 E其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
; d$ _ C$ |, d" b: A然后,在这个所在路径的目录下创建一个文件: vhost.map) O" y8 H' C" m8 g( d
内容为:
3 j( v! ~# g* j" w
4 Q, S+ h, M# _. M6 { Qwww.domain.com /usr/local/www/data-dist/domain
" {9 e3 n9 p0 C8 Q, O0 B" nbbs.domain.com /usr/local/www/data-dist/bbs u! U- V8 }2 ]4 j% x
anyname.domain.com /usr/local/www/data-dist/anyname3 N/ ~2 C8 N+ b, @* F4 w, ]9 g
# e' r. C1 `2 \6 W
以上部分都是:” 域名+空格+绝对路径” 的形式。 G( J! C6 v) h7 s% o
! p9 z" B- i' x% l$ e最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
* n; }) k6 x; S5 f" c2 X1 |+ `3 ?2 ydomain , bbs , anyname 等等,理论上可以无限。% s A- a+ w- S
0 g" N( q1 W! i这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以/ {1 B: P, {/ y {: @6 X! F. g. F% R
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
! t- Q( V; c7 i N
. }) q: ~9 Y* h/ B: q7 _第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
7 f( Y7 {: W8 [$ B- i第二步:打配置文件尾部加上% p, X8 i% }+ `& o8 {0 h
RewriteEngine on
( [" W, h J2 wRewriteMap lowercase int:tolower1 |' P% W: Z3 |/ v4 w
#定义映像文件
1 O U/ j# u( s% v6 I/ r1 ^% zRewriteMap vhost txt:/apache/vhost/vhost.map
0 i* e/ s3 g7 \8 j#处理变名' t. n; W9 n4 l
RewriteCond %{REQUEST_URI} !^/icons/" M$ V; R/ N* n% y3 h% j, y
RewriteCond %{REQUEST_URI} !^/cgi-bin/
& p6 ]) ]- }, V5 IRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
" J( F& i& o3 A1 [5 a4 Q这里做基于文件的重新映射
" Z/ j8 I9 U0 R0 v, x/ ARewriteCond ${vhost:%1} ^(/.*)$ n. w* u2 x* O3 ?& I1 x8 O7 G5 c/ z
RewriteRule ^/(.*)$ %1/$18 o! V4 `+ @1 J& @2 V
RewriteCond %{REQUEST_URI} ^/cgi-bin/- f9 V1 N1 U" X8 F4 j6 \- [/ |
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
; t8 r ~+ A: k1 B5 s: g4 kRewriteCond ${vhost:%1} ^(/.*)$
; n- Q) A. {5 D6 \$ f: VRewriteRule ^/(.*)$ %1/cgi-bin/$14 y1 Z- ~" k& m% L
% j8 w: C5 ~" k
注意:vhost.map文件是域名和空间映像的文件,格式如下: ( x9 D5 A5 q6 ~
www.abc.com /vhostusr/www.abc.com
: Q3 r" a; e1 Z2 P' k5 j0 dwww.xyz.com /vhostuser/www.xyz.com
( t% Y1 J: J4 e& z* pwww.cccbbbb.net /vhostuser/www.ccbbbb.net
/ T. T$ d- g* B8 f.
0 }4 D7 @3 L ]* e.( ^3 C! Z- ]$ P2 f1 J X7 h# D; [' o
.6 J6 _* h7 \+ l" E( n
./ B* U+ k$ O* j3 O+ v, O% C
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)8 |4 W3 a) `; H' }1 J
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~* ~! R# q; [4 O0 S
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~ ?2 N; x* c/ j2 ?) X
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~' c4 ~, A; c9 i2 \: T/ [
==============================================9 J: G* I0 n8 w
方法二、- f0 W& x' y! f' w' N
5 t+ c- Y# E* H
% o9 T" m# x! C
rewriteengine on* W6 w. K9 D6 {; k2 w3 v# W
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
6 Z' H: Q* H- A; A' V; Qrewriterule ^(.+) %{HTTP_HOST}$1 [C]
0 k; g1 M8 n4 u8 qrewriterule ([^.]+)\.域名\.com(.*) /$1$2+ ?2 m6 ]* ?" p& k. D4 J3 U- d. ^4 n. y
其他配置文件8 @/ k+ k& i* A9 e2 C
4 J x0 _; }1 q接着在DNS中开设一个泛解析到对应的IP地址。7 J6 j; @* q3 W R( J( J v
就可以实现下面的方案。1 E- j% w/ \: e k( m# E2 L% T4 c U
( ?% L6 M: ^5 }( X- @4 v域名:domain.com
9 ^: F, K9 p! m绝对路径:/home/domain.com/
5 \4 H9 F- ]1 X8 n+ V* l5 T( nwww.domain.com 自动解析到 /home/domain.com/www// B7 a2 x: e9 U' R! c
abc.domain.com 自动解析到 /home/domain.com/abc/* u# F' q: T1 V- x* \6 R1 k
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
" E, J9 G& Q! d! a+ X3 l7 m& V直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|