  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14219
- 金币
- 2400
- 威望
- 1647
- 贡献
- 1348
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:' [4 [, c6 R( V, O8 J
j1 s8 d. F" ~: P0 x. a, W8 nRewriteEngine on5 _3 ?$ _4 u: Y5 A' ~3 Q) G+ O
RewriteMap lowercase int:tolower
9 i* w/ }8 P- r @RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
2 d$ X* q6 } Z9 I5 lRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$& f3 ]4 @ } k+ o7 e3 u e Z
RewriteCond ${vhost:%1} ^(/.*)$- b3 n2 d4 H0 }3 \6 Q6 h
RewriteRule ^/(.*)$ %1/$1
# O* P) D/ w$ j6 z: w
; d. y# B) o( L. k) b b4 \; k# p: h5 d. @2 C; R- c5 f
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
/ c) _( z& g, l( B, c7 o然后,在这个所在路径的目录下创建一个文件: vhost.map
, w/ O" `, _ V3 I& S V内容为:1 y. g( Y4 ^! m& {( o1 R
: T/ J3 r! r1 x* G* s* q1 o* G' e
www.domain.com /usr/local/www/data-dist/domain
* V* K4 N7 E, c, Bbbs.domain.com /usr/local/www/data-dist/bbs4 ~: o( G8 w- w$ X' T% B
anyname.domain.com /usr/local/www/data-dist/anyname
3 Z% p2 J2 k# {% ^. F8 m- e o. m# ]9 o) p# Y4 t2 A3 _( a, y- l5 w: M; h0 D+ n: {
以上部分都是:” 域名+空格+绝对路径” 的形式。
0 L; u2 A0 N" d: ]# h5 S1 O$ c' L: q$ v) }
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录: l& q3 N5 o |7 \) l2 a
domain , bbs , anyname 等等,理论上可以无限。! [1 U( q. I8 h; N7 d6 t& O
* R$ H+ D3 e/ Z) n" B! G' a. m* O( d这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以; F: F/ m) o: L2 Y4 T. b" v
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。7 ]8 C7 H: g( A- h4 e4 v1 U: M: {( m5 Q
& I3 n# l" h1 y: m( i+ i( S第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。& F' c9 ? J5 @
第二步:打配置文件尾部加上7 b2 N0 \. a* _+ ^/ f0 T4 ]; ^
RewriteEngine on) j6 W! ~( m2 ]( g- ]1 l
RewriteMap lowercase int:tolower
- e ]' W& C9 z4 `#定义映像文件9 I! }: t9 r& s1 R
RewriteMap vhost txt:/apache/vhost/vhost.map5 L- [% l* F3 L' {# `% \
#处理变名
" t6 H4 J/ a& e yRewriteCond %{REQUEST_URI} !^/icons/
4 Z9 z& G- t# @; ?/ MRewriteCond %{REQUEST_URI} !^/cgi-bin/3 @; U: f3 o0 g' J- G; l
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$# z* W/ g" O# Y# ~
这里做基于文件的重新映射$ ]. V5 d- s- ^: U' G2 N
RewriteCond ${vhost:%1} ^(/.*)$7 E* Y: j5 U! [# P6 {$ O) |2 P
RewriteRule ^/(.*)$ %1/$1: h7 s; K2 y, W6 x1 [
RewriteCond %{REQUEST_URI} ^/cgi-bin/
+ P0 q. A0 p( F" |. B7 o3 u% vRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$6 S- D( k$ w& c1 V; f/ r( E9 v
RewriteCond ${vhost:%1} ^(/.*)$
) k. a! P/ E, K# Z; M* WRewriteRule ^/(.*)$ %1/cgi-bin/$1* {8 {% ~) C: L- n6 R* F3 s
- K2 j. a. R: }% g v
注意:vhost.map文件是域名和空间映像的文件,格式如下:
( }3 _4 L, W# e; [) hwww.abc.com /vhostusr/www.abc.com
& P4 p% G& s1 ?, ywww.xyz.com /vhostuser/www.xyz.com
" F! x2 p- L. [# }www.cccbbbb.net /vhostuser/www.ccbbbb.net
4 } [+ e' a& ^( z.* J5 z3 }4 `) r( t) s; r( I! h) ^
.
4 x4 C ^& n* L. V9 ?& U.: F5 L& p. P0 b( ^& s. j8 k
.0 i& [1 z* H3 ^
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
( R7 W9 Q3 M; T/ j第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~! i8 t7 N, ~ Q4 z+ v
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
& A& o$ g& e- p' J- m% I9 o注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
4 X9 ]5 {! [% _0 w/ o3 y==============================================) {! S0 W m4 n* a
方法二、! }& r* m+ B4 L }
+ }7 T; ?1 S( P0 o
# Q: Q) A$ _, c" Arewriteengine on
% g/ ^0 Y3 x+ T- j3 erewritecond %{HTTP_HOST} [^.]+\.域名\.com$
5 j- k4 Q: ~( Q: r L: l% `- M/ }7 @rewriterule ^(.+) %{HTTP_HOST}$1 [C]
: Y" u/ r0 r; W( Y3 n2 urewriterule ([^.]+)\.域名\.com(.*) /$1$2; f6 f, o9 T% e6 {6 f4 x
其他配置文件! c$ _0 W% W5 u( ?/ k6 `8 i
3 Q0 a8 z% {' p2 z' ]2 z( j$ h接着在DNS中开设一个泛解析到对应的IP地址。
$ ^8 f* W" O2 S" `就可以实现下面的方案。, S; {; m$ ^: \' k' w, w* Q2 v
7 t- g& x9 _; |域名:domain.com
+ D4 f5 e! p) C$ X" h绝对路径:/home/domain.com/
# f. u6 W- R+ M: ?7 Swww.domain.com 自动解析到 /home/domain.com/www/5 B# P/ T8 s' g @
abc.domain.com 自动解析到 /home/domain.com/abc/* K9 u! m3 I( K L$ P& p' c! `$ [( y
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
0 d! a2 y7 {2 C7 x& [4 S+ o直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|