|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14323
- 金币
- 2447
- 威望
- 1647
- 贡献
- 1395
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:$ s/ M8 P7 u% N' s
6 x3 {" e7 X. K5 @RewriteEngine on4 v% H0 S, a5 P7 k. i, e9 `
RewriteMap lowercase int:tolower1 L: O2 S7 s3 z8 ~2 I
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map: b) z1 e& i: u! R* a
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
6 Q8 k: ~, v( e- X7 \RewriteCond ${vhost:%1} ^(/.*)$
* T7 M; }- V) W) t i4 b1 r TRewriteRule ^/(.*)$ %1/$1- _% r8 Y8 w$ Q9 s0 ~" E h/ K* m
$ u, @2 q3 S5 e8 V1 S2 y- Z5 o; D. K' a
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。3 |! ^; T# b5 `% E9 K
然后,在这个所在路径的目录下创建一个文件: vhost.map9 a( E" x2 u1 p
内容为:
) |$ }0 v0 _7 h9 v- N; c0 W/ f
' [- j1 | N) l8 Y% ?www.domain.com /usr/local/www/data-dist/domain& x5 E" k) @4 L K3 Y5 k
bbs.domain.com /usr/local/www/data-dist/bbs4 u! ]8 @4 U* P* {; [) S* j1 [& B! v; q
anyname.domain.com /usr/local/www/data-dist/anyname# F. t) o, P! {7 R5 N6 v
& e* D; E2 ]; N0 n0 L% @# x4 N. M以上部分都是:” 域名+空格+绝对路径” 的形式。2 D& t2 }: }, [: H5 ?0 a; I- V
7 Y7 B7 W- w! l% V4 a5 g最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
' G( X5 C: W( Wdomain , bbs , anyname 等等,理论上可以无限。
# F, c% m4 E: Q# b5 v5 E3 ^/ O9 D
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以7 q' P" t9 {. Z% y; B
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。/ q- Q7 Q, O W& D6 e7 [
% o% p# _( e1 v- [1 W
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
* x. }/ y6 f+ J% l" [# V第二步:打配置文件尾部加上
' w+ X4 q0 E, }8 VRewriteEngine on# e2 i, N: X# s# Q9 V# o; }5 r
RewriteMap lowercase int:tolower
/ @ ?- I. j) T2 B* ^3 I#定义映像文件
$ s, o+ S& p3 n9 X4 TRewriteMap vhost txt:/apache/vhost/vhost.map9 ?5 ]+ @6 {/ G3 R
#处理变名' D' b2 b3 }! _4 K
RewriteCond %{REQUEST_URI} !^/icons/
7 s' {) i' E5 W! k& GRewriteCond %{REQUEST_URI} !^/cgi-bin/
' |2 E) B& P- [8 d3 n& m3 n7 \1 M wRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$/ O" I3 Q1 d$ {) ]4 y7 A
这里做基于文件的重新映射
9 Z7 c* {' A0 j5 c' T$ ERewriteCond ${vhost:%1} ^(/.*)$
' _4 a0 @( v- b0 V2 E# N6 t: BRewriteRule ^/(.*)$ %1/$1
6 `/ D/ n# ~! U$ Y+ p/ hRewriteCond %{REQUEST_URI} ^/cgi-bin/
- J6 d8 J1 y8 G, [' |% \* IRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
: c5 ]4 `4 X9 j$ qRewriteCond ${vhost:%1} ^(/.*)$
3 t% o3 k* V3 [, } D; uRewriteRule ^/(.*)$ %1/cgi-bin/$1# Y; K- \* H2 `) W t' B% n
* |3 B9 u4 s6 A" v5 E7 M注意:vhost.map文件是域名和空间映像的文件,格式如下:
, O! z7 u: {% P. ?& l0 j2 Ewww.abc.com /vhostusr/www.abc.com: n4 Z9 ]- q- {+ K7 b
www.xyz.com /vhostuser/www.xyz.com
% L+ m% ^& ^( @. ?" q4 u0 Ywww.cccbbbb.net /vhostuser/www.ccbbbb.net
& w6 g# N+ [' d4 d) ?; R7 h& ~.
4 P0 R; B' O/ f" }) w.% O2 v4 {/ D$ J1 Z0 D
.
5 p4 I* M: t4 O: S* _3 L3 {.
2 U( h: l/ d; U$ T4 ?2 ~(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)/ B. m+ X( Z: B4 Q1 V
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~4 [" R* ^1 I' T
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
; ]6 c, G) P& m* Z, v注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~" j/ y+ W2 W* h- u
==============================================( b! Q; ]4 s: q* b8 k! q! g
方法二、
% H) Z, v* v! n0 _( z3 S" d
' b5 `$ Z" F& Y+ v+ ?- k
+ a `! F$ H. s8 crewriteengine on
/ E7 V( |6 m( M m: Urewritecond %{HTTP_HOST} [^.]+\.域名\.com$
' V* Z6 a- l5 u! frewriterule ^(.+) %{HTTP_HOST}$1 [C]
, e8 x0 q4 ]6 W5 `& x7 d7 Qrewriterule ([^.]+)\.域名\.com(.*) /$1$2* O. [& t, u6 g, F' n; v* F
其他配置文件
* D# _, B E" d
6 Y3 `. j6 f1 i( q7 H9 p2 b9 [" Y# i接着在DNS中开设一个泛解析到对应的IP地址。, i/ M9 {8 ?3 ^5 R
就可以实现下面的方案。3 q0 y+ P h/ c
, U2 p& D6 M2 N: ]7 E2 w: t域名:domain.com' ~0 W) I1 O8 j- `
绝对路径:/home/domain.com/
; j h9 w2 N, }* K& n# Cwww.domain.com 自动解析到 /home/domain.com/www/) M) b: ^: E9 E1 q' s) F9 m) W
abc.domain.com 自动解析到 /home/domain.com/abc/: N/ K- r' i, F5 c) l
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹) l3 f; {, |8 B7 z, G
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|