|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14391
- 金币
- 2481
- 威望
- 1647
- 贡献
- 1429
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
+ }0 r2 I2 \0 K6 V9 _. b: I5 M$ N
RewriteEngine on& ]5 ~3 w# o; C
RewriteMap lowercase int:tolower
% g4 ?& [. f4 c$ B3 M! ?( Q* vRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
9 T) k' d5 U6 N& rRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$; d# S6 e% W/ e4 F& |, l- P/ f3 m
RewriteCond ${vhost:%1} ^(/.*)$
8 n3 g/ E) o' u1 g) b2 k9 Q( x8 |RewriteRule ^/(.*)$ %1/$1
2 x8 G; s% g, Y; H1 M7 @1 C3 X( Z. P" R$ v% |) T) O3 p
% f* a& L: F( g9 M其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
% H% W. T9 k9 i' r% \9 B& J* `然后,在这个所在路径的目录下创建一个文件: vhost.map
6 c) N8 r, w/ r9 k0 c2 D内容为:
) b0 P: ]* U- m" i: _ U7 N) F& g# Z' s: X; e2 l5 P
www.domain.com /usr/local/www/data-dist/domain
- L" {4 ]2 G0 @# \& }% ubbs.domain.com /usr/local/www/data-dist/bbs
9 f; U* q w! F1 \( Q- `anyname.domain.com /usr/local/www/data-dist/anyname# v; |- J7 O( M |
% E6 K. h( c0 \5 U s/ z
以上部分都是:” 域名+空格+绝对路径” 的形式。
/ ?& e4 u) {0 W
# F7 `$ h. N3 I5 }% k" k7 s3 b最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
& ^7 g2 ]( E/ p; `/ ^9 h2 S& Zdomain , bbs , anyname 等等,理论上可以无限。- D- T, D! I0 q" f5 \
4 x, j1 U5 _% P" f% P* O& y( H
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以4 ]' S2 R) ]% _) T- U( ]; \3 v
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。" Q( G6 D" z" {) J5 H
+ S1 l: O; c7 B) U* m第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。. ~9 t$ j5 W& ], ~8 r3 Z
第二步:打配置文件尾部加上
S" R' y0 b+ I* H0 HRewriteEngine on* f+ ^7 Z& ~) t- c5 p1 e! E
RewriteMap lowercase int:tolower& |6 S+ Z, j: ^1 q4 T e* x
#定义映像文件
+ ?, \4 K3 B! M" q- ]2 x pRewriteMap vhost txt:/apache/vhost/vhost.map, u" y# [* u2 }
#处理变名: Y3 U/ m8 k& E" {
RewriteCond %{REQUEST_URI} !^/icons/
4 f; ^. Q/ K4 ^5 L& m$ I. R4 x- zRewriteCond %{REQUEST_URI} !^/cgi-bin/
8 Y/ U0 S- ]: a- p+ V7 w( oRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
% @: T. x! h7 I; p这里做基于文件的重新映射5 f: }: i1 B* Y3 B3 H. }8 T! d9 G
RewriteCond ${vhost:%1} ^(/.*)$3 [2 t* s/ H; G x1 d2 j
RewriteRule ^/(.*)$ %1/$1! c3 s8 G& w0 S5 c; g
RewriteCond %{REQUEST_URI} ^/cgi-bin/
, X* r" N, q8 |8 [0 h* H( _RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
0 A$ ]5 q5 o; r( a3 N) K( H8 M4 WRewriteCond ${vhost:%1} ^(/.*)$
) v& ]3 I) d, G; q1 tRewriteRule ^/(.*)$ %1/cgi-bin/$1
4 G* P9 E$ {5 D3 h5 S& t; M1 Z4 }, O( E' U' s
注意:vhost.map文件是域名和空间映像的文件,格式如下: 7 Q) J/ f- K- d; H
www.abc.com /vhostusr/www.abc.com
# }% S& F3 H- [8 Vwww.xyz.com /vhostuser/www.xyz.com) n1 T' a; P9 |* s' }0 W" G* t
www.cccbbbb.net /vhostuser/www.ccbbbb.net
( n: a* H7 l8 S* k! F.
3 o: c+ V( V* H1 F. [% e# C.* v. ?4 K" o/ ]- Q3 i z/ P- w
.
- v/ c' N; |' q# y) A, Y.1 M" p# V* ^' h1 \( H; ?) X, G) m
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)0 W8 {( k7 H& q9 w: R9 {3 e2 ^
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
. X& ^" m( P3 A0 y& Q' z0 F' N其实这个可以用php脚本来完成的,很简单的~~呵呵~~~$ ^" ~9 |7 Q6 l& W$ R
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~! I8 I0 `7 U3 K+ H5 o. V3 f
==============================================" z$ c6 Z( l$ R; Q+ g1 ^
方法二、
* h F) H0 G" Z" Z
8 l- J' T% P8 M) y* D) s) @# L& d
rewriteengine on
9 ]& D' |2 C8 U- Irewritecond %{HTTP_HOST} [^.]+\.域名\.com$
0 S1 |7 t4 `; G7 drewriterule ^(.+) %{HTTP_HOST}$1 [C]- s) t( s8 ^# V& M f6 m2 W
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
/ d4 x2 d2 a9 |* G1 Z) j" m8 G- ]其他配置文件/ G( |4 Z# d& P; e- E9 n* m d- X6 J1 o
+ m+ D: v& ?& g- t9 ?* q5 Y5 G" k接着在DNS中开设一个泛解析到对应的IP地址。
7 r' U. p4 F4 `0 x) k, |* Z; W/ h: u0 S就可以实现下面的方案。
B% d! M" R" n/ m" K# N3 s$ |0 ~
域名:domain.com! C9 R7 r3 l; r, O! C3 s
绝对路径:/home/domain.com/
0 p4 b1 M( L- F4 A9 Lwww.domain.com 自动解析到 /home/domain.com/www/9 a! g; Q# d& _ V
abc.domain.com 自动解析到 /home/domain.com/abc/
- W" s4 Z' r" ?! [等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹/ u# C; @2 ^ I
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|