  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14247
- 金币
- 2414
- 威望
- 1647
- 贡献
- 1362
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
- }' }7 p: j/ Q q4 V" O
- @ I: V9 s; H* [8 rRewriteEngine on% p9 C X/ z8 B$ c% s
RewriteMap lowercase int:tolower
/ L1 a$ j% u& ]* vRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
2 N, H; u9 W, {9 Z8 P" v: J" g9 @! o0 QRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$1 i" A1 o; ]$ G0 E: H) ?
RewriteCond ${vhost:%1} ^(/.*)$) }3 c# R" |0 X
RewriteRule ^/(.*)$ %1/$1
, q4 p- m/ G: ^, J9 C; D% J [' B" M( T# D, D
+ i9 O: K3 w, u k5 V: s7 H4 _其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
`6 \2 U! \1 n5 V+ [7 u然后,在这个所在路径的目录下创建一个文件: vhost.map
6 Q$ h5 b/ B7 q内容为:# M. z1 I/ w- ~( \7 s
4 z Q4 y: M }4 X7 h q8 u
www.domain.com /usr/local/www/data-dist/domain# |. u5 m* e: n) L$ L9 _
bbs.domain.com /usr/local/www/data-dist/bbs
# e; p( f9 Q. f" Z9 ranyname.domain.com /usr/local/www/data-dist/anyname$ [5 z$ c5 X0 v- ]0 A6 I, G
) Y8 [0 m( ?( N- G5 J
以上部分都是:” 域名+空格+绝对路径” 的形式。
% q2 ^" y7 `# k7 c* p
1 q3 F5 I% T6 i$ f- z最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
. s# A) Q! @" q( ~domain , bbs , anyname 等等,理论上可以无限。, F+ X; M( Y; i2 ^
% P1 F4 V8 z7 ~; c- j+ }
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以7 g) L) R) O& r* s9 C% g9 v
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
7 `; t3 W7 @6 U" ^1 |, H" L8 `
. V W5 M! t/ w& N+ k% {第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
. X# D' J' P2 }" c+ ]/ s第二步:打配置文件尾部加上9 m, F$ E- ?$ ?% v4 A& Y& M
RewriteEngine on
o6 [( u; V& R/ VRewriteMap lowercase int:tolower
: f8 z6 ]: S8 t0 ]" s#定义映像文件
2 I+ t) A5 N, P9 V5 z3 PRewriteMap vhost txt:/apache/vhost/vhost.map
8 X) N7 ?7 _* Y$ Y0 S4 ^- p. s#处理变名& i' O; v) I3 C- v, i( O' x
RewriteCond %{REQUEST_URI} !^/icons/
2 j. w% y! H* U3 X. J6 i' s, VRewriteCond %{REQUEST_URI} !^/cgi-bin/
2 b& w" I& ?$ U/ ARewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$5 N! t4 z C8 y
这里做基于文件的重新映射
^2 z Q6 R% E6 {RewriteCond ${vhost:%1} ^(/.*)$
8 v) Y2 e+ p' m% T s0 lRewriteRule ^/(.*)$ %1/$1
6 u( V$ l$ n! i# m& ~* {( ZRewriteCond %{REQUEST_URI} ^/cgi-bin/* s7 `1 t" v; D' `( T8 l& J4 N) i9 a
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$" |$ K- C, E; [! a
RewriteCond ${vhost:%1} ^(/.*)$
& C7 y6 U7 d8 k0 J3 [/ |5 ARewriteRule ^/(.*)$ %1/cgi-bin/$1& [6 z- |' D5 X/ H
, l/ |* _: R6 ?注意:vhost.map文件是域名和空间映像的文件,格式如下:
$ t: J2 k4 ?3 X0 ]6 J5 [7 Vwww.abc.com /vhostusr/www.abc.com$ A8 S2 }5 L" p7 [. l, i0 `
www.xyz.com /vhostuser/www.xyz.com# l& x {6 j7 k4 l4 E9 r- ^" h( ~
www.cccbbbb.net /vhostuser/www.ccbbbb.net% J2 l# q2 k5 k2 w( W
.
) H, Q" r/ r4 \2 ~; M.2 P% h: ^, B0 W
.
* g5 }$ e0 p( v- h# I7 O$ U! u5 ^.
7 o" H& s s4 F$ z(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
) a, q9 M8 f4 i5 b第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~. S0 U0 d5 ~7 C
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~7 G+ L+ q9 b$ F9 C: |* F1 H1 I
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
0 o5 `/ v& z" y, p! m) d* K==============================================! r3 F0 `0 j7 }/ C
方法二、
2 h G' l. _% p C1 i+ F
4 z4 p/ [, m4 K1 z/ a' z! U9 o1 |1 K8 G2 N0 }5 |. K3 n0 P
rewriteengine on
& d7 |, ^+ t8 Wrewritecond %{HTTP_HOST} [^.]+\.域名\.com$5 G" k- z3 }& \- @0 O
rewriterule ^(.+) %{HTTP_HOST}$1 [C]: h2 w' R5 h$ I
rewriterule ([^.]+)\.域名\.com(.*) /$1$2- y( ]+ s$ C9 E7 e4 f4 t4 Y
其他配置文件
3 F: T) O6 r3 M$ p N# I5 M
4 p u% s6 d: |4 U% N- e8 n# T. [接着在DNS中开设一个泛解析到对应的IP地址。
& n# G( C1 \6 e. G& j; H" X, o就可以实现下面的方案。
. k! p) M8 v, r" N0 L+ x7 y; x3 G5 V4 w1 I0 \% b6 Z- L% p
域名:domain.com
- O6 Z; z! E. d) T1 v& C: G2 [* q绝对路径:/home/domain.com/3 M0 f, [& Y+ h6 Q/ U
www.domain.com 自动解析到 /home/domain.com/www/( i: \( ?2 S9 k9 H% s) b
abc.domain.com 自动解析到 /home/domain.com/abc/
9 t7 `. w* ^% _4 B$ I' I等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
% b% ? @5 h" ^/ M; W6 X. b直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|