|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14389
- 金币
- 2480
- 威望
- 1647
- 贡献
- 1428
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
" |1 G' Y: T% T; q7 s2 @
( p+ @# n! t. S% ~RewriteEngine on: `/ Y" c: \1 Q( v- H
RewriteMap lowercase int:tolower$ Z3 S( K, V- ~6 j# l. E* ?8 e3 k
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map; u6 m& U: s, F2 u8 j5 g
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
5 c: e6 p. p# `2 J9 x" I$ J f; A nRewriteCond ${vhost:%1} ^(/.*)$3 @0 \3 L4 `7 [) \5 q: M6 h
RewriteRule ^/(.*)$ %1/$1
% ~" y R7 w2 @2 s# N$ x5 p% Z
. O6 x* ~& W. ^* I
3 @: o. C, a# d0 {& \. y; z其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
; S# n2 G$ }& Y4 G/ a) F然后,在这个所在路径的目录下创建一个文件: vhost.map) `4 J& F, j- ]. n3 r8 I
内容为:4 ?8 h! n$ S. N# [" H
; q, M2 ^! I; G8 `7 V7 Owww.domain.com /usr/local/www/data-dist/domain8 R! z7 N7 ~9 O( |. I0 \8 V3 _
bbs.domain.com /usr/local/www/data-dist/bbs
) {. | o; q5 ?/ I3 | ^& V* q% b8 W. Banyname.domain.com /usr/local/www/data-dist/anyname% G. k0 C0 q+ G k# \; k: T
/ k; p6 R% q# [# M5 D& L$ z
以上部分都是:” 域名+空格+绝对路径” 的形式。
( o& @" ?- k& |# f @. t
8 D0 @" Q9 _: J6 V. n5 n最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:- l. q$ J$ B; `8 Y& S2 v, R; I* C
domain , bbs , anyname 等等,理论上可以无限。" ]2 Q5 Z2 A {6 Y' j- P3 e
3 B+ u; B, n+ V, n/ Y
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以3 k) z+ D7 S' {. o/ e9 p
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
4 B! n) K, p- U- T j5 x, Y) j! _: D) S
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。. V: [3 P y# ]9 I+ b
第二步:打配置文件尾部加上
5 W5 D' Q" C3 ?" v* V6 GRewriteEngine on. o$ E6 K8 Z5 @& j
RewriteMap lowercase int:tolower9 m& V0 L; G) K C! J7 X
#定义映像文件
_" Q$ q. \- S6 U0 ?" Z! sRewriteMap vhost txt:/apache/vhost/vhost.map5 w* F$ |7 C1 }( x8 i
#处理变名3 b+ L, J* M) P, v! m
RewriteCond %{REQUEST_URI} !^/icons/- {, f0 `; n; p& r% I" P. q, l
RewriteCond %{REQUEST_URI} !^/cgi-bin/! D U5 D1 L. Z3 P
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$. [8 G' j' p6 H' A* a9 H6 b8 r, W& o% N
这里做基于文件的重新映射
2 V; Q7 H* g4 ?& s3 pRewriteCond ${vhost:%1} ^(/.*)$( N+ m1 o4 W) s6 P4 V# V$ _
RewriteRule ^/(.*)$ %1/$1
. Y9 ?0 ~2 L" u2 [0 J7 JRewriteCond %{REQUEST_URI} ^/cgi-bin/
b5 d/ T: W, Q' Q% I" ? G. ^RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
( p* a+ M! G9 g* ~1 h0 W% I2 e! l5 aRewriteCond ${vhost:%1} ^(/.*)$: n" B3 S' z, X6 c A
RewriteRule ^/(.*)$ %1/cgi-bin/$1( z: n& f: V Q! s8 n: v
3 D L2 V. p0 ?% c% t9 B2 x注意:vhost.map文件是域名和空间映像的文件,格式如下:
7 |5 V2 D7 t! G9 ]: \1 \www.abc.com /vhostusr/www.abc.com" u4 l3 e6 d; b- m7 }) l
www.xyz.com /vhostuser/www.xyz.com! W0 s4 ?$ r0 D- I, u" P9 ^4 ?
www.cccbbbb.net /vhostuser/www.ccbbbb.net
$ Z% z! O( a8 d1 T- Z; C.6 f/ G$ t8 Y. j) T w
.( H; t2 r. ?; f, M7 M2 y3 U, E
.
$ c0 [9 b& R% ? v: P., C ^( A; z- T+ I$ v d
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)) y$ g. X& K* }3 \3 @$ G/ _6 y
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~8 o+ b9 _% q2 ^) s
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~7 i0 a4 [! Q1 h4 O# X5 s7 J9 g
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
3 X6 f5 I$ N' S0 Z* K" G! U8 ]==============================================& C# c; I* R4 u \5 E/ \
方法二、* c( X, |2 J" F1 @: B$ Z
6 l3 j% m4 E+ O
7 O$ F4 B6 z5 x% k
rewriteengine on
0 V6 n& D& C) Frewritecond %{HTTP_HOST} [^.]+\.域名\.com$& g+ F, d( M) o) U( F2 `
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
5 |) d4 S+ a2 J8 n3 lrewriterule ([^.]+)\.域名\.com(.*) /$1$2
- f- s$ Z. p9 O& w% ] V/ ~: o7 r$ }其他配置文件
" |: C! O$ j! g( K7 t F8 `. I/ V9 I' C" e
接着在DNS中开设一个泛解析到对应的IP地址。; r: T/ Z2 P# U' a B3 @! P
就可以实现下面的方案。
, ~0 B, K* d) E6 ]2 ^! r! x! H+ I g) F
域名:domain.com& h/ [, B5 `% E; _9 A( X7 P! X
绝对路径:/home/domain.com/
0 o+ Z( C/ W- N: @" ~5 [( \www.domain.com 自动解析到 /home/domain.com/www/
% |& S! J4 \& vabc.domain.com 自动解析到 /home/domain.com/abc/& S4 C" y( P8 r
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹( y! n5 ^9 ~, q; o
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|