  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14159
- 金币
- 2370
- 威望
- 1647
- 贡献
- 1318
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:# u/ \' y1 n, i" ?4 ~
+ ^, m2 w0 X6 T6 T+ q
RewriteEngine on
/ c+ `7 G7 O1 h; _3 u/ ~RewriteMap lowercase int:tolower
; y( h( W: K& y1 r. A; j) CRewriteMap vhost txt:/usr/local/etc/apache/vhost.map# s; ?4 X3 ^8 K9 a7 S
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$7 \7 P$ j) t! m. f
RewriteCond ${vhost:%1} ^(/.*)$
( D( E" k& j$ q- yRewriteRule ^/(.*)$ %1/$1
# u' l- |3 G/ s3 ?0 q
9 _" I+ Y1 D8 }! x x+ ?
& S/ e/ g; O0 \* H其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。& [ `5 ~# f( b" O% p6 Q0 N$ l
然后,在这个所在路径的目录下创建一个文件: vhost.map5 B0 _- c, q& j3 P1 D6 r
内容为:
6 q6 B6 S3 ]" s2 k7 R- _% l! _6 H6 P( M
www.domain.com /usr/local/www/data-dist/domain! C Y. L% ~* C( ~ ~/ Y* y' g
bbs.domain.com /usr/local/www/data-dist/bbs% m7 H' ~- M3 K9 `1 M( L( f& E
anyname.domain.com /usr/local/www/data-dist/anyname
4 \. A4 `6 c/ c& U4 p6 U) V' v8 E. }. a; R8 ^! a
以上部分都是:” 域名+空格+绝对路径” 的形式。$ }. n5 G4 r3 x* ~2 K" H/ E: A
`( }0 J2 h) g6 Z8 d+ L8 H
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
0 D- U6 P2 ?9 i' sdomain , bbs , anyname 等等,理论上可以无限。& `. R* B: n8 X: H
9 R1 t; A. N& p9 l这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以: T5 l% r7 D7 T
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
9 T9 s: u& V3 [6 G& B( L* y3 Z' a7 S( J! D9 i
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
# Q7 a/ C* d1 L第二步:打配置文件尾部加上
8 ~( v( h* q5 G* Q2 ?! HRewriteEngine on
! U# r+ u7 \. x, c8 J5 LRewriteMap lowercase int:tolower
7 B: D- E" P8 g j2 C$ }5 n#定义映像文件
6 ~, f* E3 k( W6 R) G q QRewriteMap vhost txt:/apache/vhost/vhost.map
+ e: M& y+ S' N m5 y2 P' ^0 x#处理变名
" {8 Z. _+ I. W' uRewriteCond %{REQUEST_URI} !^/icons/
/ s5 O/ N" o' ^' JRewriteCond %{REQUEST_URI} !^/cgi-bin/
" J3 [( `0 O' C1 N7 iRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
# ?+ ?; z8 D: U& d这里做基于文件的重新映射
( h3 `% f# x1 L kRewriteCond ${vhost:%1} ^(/.*)$0 D6 G0 c! u: [. d) ?+ q0 [
RewriteRule ^/(.*)$ %1/$1
; u( i V* W. S# aRewriteCond %{REQUEST_URI} ^/cgi-bin/
0 T6 T5 ~0 B8 U" v; Q# H LRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$8 _( g: [* F: O2 t3 n) H
RewriteCond ${vhost:%1} ^(/.*)$% z% n. m6 }, |( C$ ~/ b& w
RewriteRule ^/(.*)$ %1/cgi-bin/$1' y6 Q7 |6 `$ c# m9 ?7 i! O: S. \1 ^
0 s2 q* M: k* l1 C; w, D, I) H
注意:vhost.map文件是域名和空间映像的文件,格式如下: % X$ U; L' c5 M: g3 F" w
www.abc.com /vhostusr/www.abc.com7 U: K, [, ?4 t( c$ Y5 e. T+ K
www.xyz.com /vhostuser/www.xyz.com
) @+ }6 U: G# d3 O+ @www.cccbbbb.net /vhostuser/www.ccbbbb.net8 r1 I" \ v! P8 K" O
.$ R* _! C% J2 ~ |9 _- O6 N+ @+ P
.
- p$ `( ~' m( |) P0 M.
" \; N! |: @* E* g$ a.
% w& O/ B4 [! C7 x(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
4 M6 _2 D/ h* a2 Z: O2 g第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
$ `% ?# M# S x% ^ ~其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
- E% H' R) ]6 Y2 H. ]6 I注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~' `7 s/ K% @2 l# y) |7 I ]# O
==============================================
3 y% W1 ~& H& k! o! C% w5 @7 N方法二、. A6 t6 S, ]) L1 J3 O
6 j9 `+ T. ^ h+ {, V' E& i3 `! r+ v0 q7 R* ]& _0 ^
rewriteengine on
( Q" T! V \' N, C2 `# r3 _rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
# Y1 x/ {& t, t: W Z n" \3 arewriterule ^(.+) %{HTTP_HOST}$1 [C]
& c6 n4 |! S4 }4 q- }6 yrewriterule ([^.]+)\.域名\.com(.*) /$1$2
9 Q7 w& t; m: |; S d- O6 l' B其他配置文件+ G h# c; J* ~( ^" w
6 Q' X5 U7 c4 ?. I: M6 |接着在DNS中开设一个泛解析到对应的IP地址。) T4 c ^7 \, I0 H
就可以实现下面的方案。
i' f L' R- C
& [' ` I ^+ Z. F域名:domain.com; W6 I$ P! t4 I4 K
绝对路径:/home/domain.com/
8 V. M' }- u7 L0 n: G0 a% {8 Z4 Z1 Mwww.domain.com 自动解析到 /home/domain.com/www/1 H" P2 p1 Y* R" m9 o G$ ^
abc.domain.com 自动解析到 /home/domain.com/abc/9 [7 M" m, d# [! t6 y6 |
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
% f; R& m2 g1 ?1 m/ W. `直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|