  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14189
- 金币
- 2385
- 威望
- 1647
- 贡献
- 1333
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
# w+ `. r& ]3 x+ m1 B9 G
* r0 D2 ~& h3 k$ h3 y+ e& G4 iRewriteEngine on
. p. a' q. N* e1 v- W) yRewriteMap lowercase int:tolower
3 K: p2 \3 E) ^) N2 MRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
/ I( O- _# j uRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
8 c% Z d( W' o, l. ^5 t8 m& Q$ cRewriteCond ${vhost:%1} ^(/.*)$
6 Q& G5 v6 T; P) Y; MRewriteRule ^/(.*)$ %1/$1
+ @% s+ a1 t7 [$ `# a/ d" \; h1 j
4 `- a/ z0 r9 p0 r9 @2 |0 P" Z1 l3 f! d( ~) M6 c- V
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
* f5 K8 `2 ~: O* @ h然后,在这个所在路径的目录下创建一个文件: vhost.map3 Y3 A: U* Z8 l
内容为:
8 q( t3 h4 \- i/ s
* q4 H: y# C# h7 z4 Ewww.domain.com /usr/local/www/data-dist/domain, t* c- Y% {& K, t9 K1 x4 h
bbs.domain.com /usr/local/www/data-dist/bbs
: I" h; V9 R! e' X9 ?anyname.domain.com /usr/local/www/data-dist/anyname/ u$ f( y3 K: h( q0 Y6 C. k: D
6 S7 M0 f0 S; O m5 ?
以上部分都是:” 域名+空格+绝对路径” 的形式。
* H; a3 F% L! s+ s9 k. o) ~
" \. k; N- c+ q6 I% j# M! o. z最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:3 v; m" l! F3 h
domain , bbs , anyname 等等,理论上可以无限。9 Z9 q) h2 f! R
# Y$ N4 v- g; y- ?这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以: j0 p6 K$ E1 t! g5 h
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。# b3 g1 M/ t0 c3 }/ A+ H
* I, F, c6 d0 v0 E8 Z/ F6 b第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。, H. a: P0 J O; p! l) r% O
第二步:打配置文件尾部加上; I3 f4 r. Q' I( b. f3 _1 ?+ b- Z
RewriteEngine on
# ^& J, F2 d: A, ^RewriteMap lowercase int:tolower
, _; s8 Y4 q1 b. t#定义映像文件: p B$ ~; Z6 \2 q
RewriteMap vhost txt:/apache/vhost/vhost.map! x/ V4 z9 y5 [6 n$ `+ _' ?; }" p
#处理变名
! X. T! I a) w, o6 ~- M1 ZRewriteCond %{REQUEST_URI} !^/icons/
" A* ], z& I& d. b7 Y) h6 NRewriteCond %{REQUEST_URI} !^/cgi-bin/
8 v8 A1 h' V4 ]; @. ~& _RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
1 j8 U3 m7 T# ~* y' T+ n5 I这里做基于文件的重新映射5 S+ d. l" a Q1 D5 S3 p4 c( Y2 i
RewriteCond ${vhost:%1} ^(/.*)$
+ \4 W( I/ P8 b4 j- d! K, A4 h- ]RewriteRule ^/(.*)$ %1/$1
: g' d& x+ t, [RewriteCond %{REQUEST_URI} ^/cgi-bin/( v6 R( L9 D8 L( E( ^5 l
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
6 }) T2 S$ O3 b7 B' e3 ~RewriteCond ${vhost:%1} ^(/.*)$
o1 y, W3 B6 L4 b% _5 YRewriteRule ^/(.*)$ %1/cgi-bin/$1
, @3 i5 y$ a" L2 e, @/ k
6 @9 I' s6 e' ?) f `注意:vhost.map文件是域名和空间映像的文件,格式如下:
$ ~# r, t5 |3 N, H) ~9 K; u+ b0 bwww.abc.com /vhostusr/www.abc.com
* g" e3 r# |; N0 Y7 J* uwww.xyz.com /vhostuser/www.xyz.com2 U' ^; C1 o! S( v" ~3 E
www.cccbbbb.net /vhostuser/www.ccbbbb.net* o, H* `$ W& y' W7 W
.
; i' x; z9 S0 _+ T3 i( M." _9 Z* L8 Z# W6 ~; g6 x
.9 ]6 n8 T, D* [3 M. g: ^3 d
.
{2 W2 P( y" k7 }" z$ k(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)9 M% h @' C: O2 |/ [
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
# F9 J5 d5 v% {; _; Y) b5 O6 W其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
! @4 n* x& q: J8 K6 j# k4 |注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~ B' f9 E7 o2 w* b
==============================================
* u# ]5 R' M1 M4 ^8 f: @+ F* g方法二、
* n- _% b& I* t; ~$ i6 F6 ^, a" @9 {% c4 }* e. n3 @2 K* G
. J1 j1 u9 ]: D) @7 J
rewriteengine on5 t: L& r$ o+ }+ q1 B. h5 f
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$4 [" e1 _! C9 V& a
rewriterule ^(.+) %{HTTP_HOST}$1 [C]9 O# E( Z- s7 Y" s9 i3 n
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
3 H- V+ ]0 }" T u0 V其他配置文件
x0 o: s1 e) `$ T4 |# i# Q5 l/ L/ ^, L1 H
接着在DNS中开设一个泛解析到对应的IP地址。
7 ?! ^1 q: S3 t5 M6 Z% x6 e! n就可以实现下面的方案。) x! \5 \ A5 K+ g7 y
' W' d% d! w. L: q1 S& [域名:domain.com
+ E' \1 C X1 l: g5 T H! D# P绝对路径:/home/domain.com/
) G1 Y8 {3 Z- H( [: q$ D6 ewww.domain.com 自动解析到 /home/domain.com/www/
3 v& M1 \6 D+ ~: w! i babc.domain.com 自动解析到 /home/domain.com/abc/2 r \/ @/ r" O/ A" [
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
; x4 H% z6 N; z0 N; E; T \+ i直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|