|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14387
- 金币
- 2479
- 威望
- 1647
- 贡献
- 1427
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:; q3 L% \8 d, R2 Q1 H3 w& l2 q
* @' D& H( ~& D% L( x+ ^% f& K% S* I4 t0 fRewriteEngine on
9 y) [6 y. u6 g1 r7 T; gRewriteMap lowercase int:tolower
$ e, e" [+ | C& J! G+ CRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
k) a Y8 X5 }8 y& O, ZRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$9 C" l7 ~ t9 [, L5 K, D" f7 D0 p
RewriteCond ${vhost:%1} ^(/.*)$
" Q' j; a* P8 }( z* aRewriteRule ^/(.*)$ %1/$1 B H4 [) h4 _ J8 A7 C' g8 Y) W
' D i" g: b) x& \8 a
9 h1 N( r7 w+ @ b! H% ]% g其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
9 R+ v) s' b. n" l% C6 J! ^% K' J. I然后,在这个所在路径的目录下创建一个文件: vhost.map+ p6 H! A N" c- D% x" _
内容为:0 }- v$ \8 G) j; N/ E. F, t3 B
7 f2 b b) n4 H4 L8 l8 z% _www.domain.com /usr/local/www/data-dist/domain* G9 u7 ]" q- w5 W
bbs.domain.com /usr/local/www/data-dist/bbs! I* n- l3 F+ e. I
anyname.domain.com /usr/local/www/data-dist/anyname
, U$ i* l# i5 [
_5 r# t' r* X2 D; n- J以上部分都是:” 域名+空格+绝对路径” 的形式。6 H( k4 v% [( y
Z0 c8 O/ L) ^! ~* k
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
; t0 E5 J! W- Y5 _: g+ q9 w# ldomain , bbs , anyname 等等,理论上可以无限。
' {0 {$ L! k; b9 B0 m
. |, V/ _, h; f* V这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以, D) h0 |2 X3 l$ z
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
/ f2 E) j0 F6 T) {1 F& U P/ ^) _" |1 V2 @4 Q) W
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。$ j, I. P1 ~6 w
第二步:打配置文件尾部加上
- F8 Q- n6 R9 q" u. v! VRewriteEngine on
, [5 R. _' @& ?" w$ p- ARewriteMap lowercase int:tolower
L. a" A+ l7 V. Y: k#定义映像文件
6 S+ @- w, o" n, D2 {2 @RewriteMap vhost txt:/apache/vhost/vhost.map0 M% a5 B, y* R7 u+ \% u/ u* I
#处理变名( m0 Y* V$ h, j, s
RewriteCond %{REQUEST_URI} !^/icons/+ ], \) {; \2 Q# o1 {, P) o% u
RewriteCond %{REQUEST_URI} !^/cgi-bin/
}7 x+ w0 {/ Z; |RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
, m& C2 x% K/ y" Q) h这里做基于文件的重新映射# m& ^. z! ?% S5 S+ Q" F# E
RewriteCond ${vhost:%1} ^(/.*)$
1 z% J* \. h4 t2 T' J9 u1 P# YRewriteRule ^/(.*)$ %1/$1
5 I% T( j1 [+ V, J( K5 r9 t9 w: gRewriteCond %{REQUEST_URI} ^/cgi-bin/9 R. I3 @* F4 [2 g% B* i$ w+ \
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
, v( s9 }1 E* [" FRewriteCond ${vhost:%1} ^(/.*)$
7 \! G, g; N* u1 TRewriteRule ^/(.*)$ %1/cgi-bin/$1
8 Y5 ]3 W( } @$ L) F7 k+ K, L3 W, I5 A, b, w' W0 T
注意:vhost.map文件是域名和空间映像的文件,格式如下: . l9 F1 t* q5 E" N. e% I4 |
www.abc.com /vhostusr/www.abc.com- G/ k" U: e- C5 G h' s- @. ~
www.xyz.com /vhostuser/www.xyz.com$ O! }* ~- J8 s7 X$ y
www.cccbbbb.net /vhostuser/www.ccbbbb.net
+ i3 G2 j% C6 e; s.
/ ~. M$ y' ~" `' o+ y.8 a$ ^, d3 v4 s
.
0 i" h% N/ ?3 Q. H1 G; J1 c* m+ c$ f b; c
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
; z5 W F% M. k @" q第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
; N6 O6 V2 ~9 X$ u+ r& ]5 M其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
4 s9 _4 _4 ^6 J注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~! y6 M/ y& d- A8 M; ?8 @
==============================================; [; Q( D( e/ M5 ]. r
方法二、' n: o- ?% n& E
4 D- t# G" b' z! X
/ ]. x0 t- \0 {rewriteengine on
7 D, p; y4 O) J+ T0 j6 [/ ?' z$ e: Trewritecond %{HTTP_HOST} [^.]+\.域名\.com$8 i0 `) D! x1 v' s
rewriterule ^(.+) %{HTTP_HOST}$1 [C]* O+ n( ?6 O4 c9 n( E7 L5 d
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
$ E* A3 M$ |0 |4 ^( l# ?1 y9 c; g其他配置文件0 J3 L, K; p, x$ S( M
/ i$ S5 u4 E: j: B2 s. C6 y9 @9 L
接着在DNS中开设一个泛解析到对应的IP地址。4 p3 y& W1 l# d: t
就可以实现下面的方案。' f" N8 p8 n8 T5 x
2 R' V6 k: h% a8 F6 T* p8 J
域名:domain.com9 r+ U, j8 c1 Y4 j+ Q) B7 E
绝对路径:/home/domain.com/
5 S% N/ B" p h1 |$ e# pwww.domain.com 自动解析到 /home/domain.com/www/
( Q; i6 Z) `# `abc.domain.com 自动解析到 /home/domain.com/abc/
5 B; u' ^: {4 M7 i# |等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
J. x( T o: Y* E( f9 x# U直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|