  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14171
- 金币
- 2376
- 威望
- 1647
- 贡献
- 1324
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:) e2 X x# L6 M% j: f) W
( z9 C) W* `5 v0 H# i5 ZRewriteEngine on: K5 k& T* t' Z
RewriteMap lowercase int:tolower
: L$ E4 e6 I0 Q# BRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
' K: \7 m9 g6 Q& i) {RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$3 d+ I: G8 y- x
RewriteCond ${vhost:%1} ^(/.*)$0 j) M- y/ A* {3 v
RewriteRule ^/(.*)$ %1/$1% c, A6 V6 ]; D+ X0 M* f
. V5 k& K; A( L& L3 o
0 p" O0 E+ ^# M2 _. D7 `) ^& T) i$ _) Z# E
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
8 o2 g/ Z8 T% v+ f然后,在这个所在路径的目录下创建一个文件: vhost.map% n. R; {( z) E/ k" ]! G
内容为:9 N9 E1 }% \1 v6 ^
# M2 J r6 ?2 K( |
www.domain.com /usr/local/www/data-dist/domain
3 ^! p3 g" f. t2 Q" l7 B2 @. ^# @bbs.domain.com /usr/local/www/data-dist/bbs( Q8 V6 T2 m* t( B {
anyname.domain.com /usr/local/www/data-dist/anyname7 v+ c$ a# } B
) |+ T6 [- i& i* }( P
以上部分都是:” 域名+空格+绝对路径” 的形式。# F/ v( [) r v) Y$ u3 G9 Y9 `
, K1 T' x6 c$ {& O* d$ p最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:; O2 u. p( X0 M# v" b$ U. J
domain , bbs , anyname 等等,理论上可以无限。
# g: a' R. q4 P( u7 R( q, Z( X8 h- F1 q' w% b5 t2 V
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以5 b$ N. Q( Q/ R1 R
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
( p0 L% Z, Q1 {2 F
+ V2 R4 W+ v, N" l第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
- L {- ]. l4 Y$ ?2 i& Y) \第二步:打配置文件尾部加上: T. a; O( M& j- \6 [3 X _# ?7 i
RewriteEngine on
; k" P6 W/ e* H+ g7 ?RewriteMap lowercase int:tolower3 E% f/ V" d+ P8 c9 Y$ P# G& W! S4 C
#定义映像文件
* M- C5 E/ `' `+ r( K! I: \; G6 CRewriteMap vhost txt:/apache/vhost/vhost.map
) }5 H4 U) V+ U& d#处理变名
' ~. @/ ? N3 E" A# gRewriteCond %{REQUEST_URI} !^/icons/4 h: H8 a; R. r- X, D
RewriteCond %{REQUEST_URI} !^/cgi-bin/& A5 m! _' `- u6 ~
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$, Y; S% n9 I- K$ U5 E' U; z6 T& [, Q" I
这里做基于文件的重新映射2 A5 d: W- T, ~; E
RewriteCond ${vhost:%1} ^(/.*)$ [9 j3 R% b, \+ |# |7 ^
RewriteRule ^/(.*)$ %1/$1/ K( }! S" |) k
RewriteCond %{REQUEST_URI} ^/cgi-bin/3 `) u0 r, l+ [( W% V5 y) X
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$' w$ X V' @ f) z4 s+ v# r [
RewriteCond ${vhost:%1} ^(/.*)$9 P# p% z/ f3 E8 ^5 u7 I; y. ^
RewriteRule ^/(.*)$ %1/cgi-bin/$1
( r7 k( S$ [9 t$ \# a: ]3 G; q1 z. S
注意:vhost.map文件是域名和空间映像的文件,格式如下:
7 `) \( M9 j* b9 F# w! \: Z+ ~! dwww.abc.com /vhostusr/www.abc.com
/ S" D0 G5 H" C U7 Rwww.xyz.com /vhostuser/www.xyz.com( o$ n h; c, D# Z
www.cccbbbb.net /vhostuser/www.ccbbbb.net9 p( z! S) o0 V9 F- u. t3 o7 z
.
4 Z+ G. ^! ]! v9 F) B" d.
4 r& W, J! D! j' ^8 @! r: k.
$ g6 Z- R/ b4 N.6 `" k" N4 ]# f' t
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)& }' O9 g n& {. D9 A% l' L' s2 v
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
" A/ {" d2 c% e7 Y- y其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
+ R: i. F3 s. W# t注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~% L A; M$ c- v
==============================================
0 j, G9 _6 [, w: L$ D) ^) `- V0 T方法二、
0 @2 l( F% W4 e5 W& j7 ~6 j* z+ n
: C5 ^2 @. D5 o( u; O ]2 l
) F8 O$ e) w" l- z% m% I, P# g1 Yrewriteengine on9 I6 ?3 \9 d9 q3 [9 V8 s
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$5 @" `' G! A0 ^% H
rewriterule ^(.+) %{HTTP_HOST}$1 [C]; W) f- z5 t2 ~" C4 r4 R
rewriterule ([^.]+)\.域名\.com(.*) /$1$2- h* E4 J) D+ X4 X1 f% U* h7 V+ L& M5 G
其他配置文件
" P& H K8 d" N1 b9 R0 a& o. Y; L' V% e
接着在DNS中开设一个泛解析到对应的IP地址。
/ [! K& J7 y: h5 p) j' m, g# M就可以实现下面的方案。
/ _. B- h- q. t7 b- g
9 y2 R) c( E( h3 X7 d域名:domain.com
- x: ?: z9 y+ @ x绝对路径:/home/domain.com/- w8 }+ p& X5 N$ j' b
www.domain.com 自动解析到 /home/domain.com/www/
) M! O# K3 ^" J- t# d# T! vabc.domain.com 自动解析到 /home/domain.com/abc/! [; A+ @" |/ {* i5 C9 @) Y
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹0 m; \9 S. P, }3 B7 r6 Q1 ^& v
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|