返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
- `$ L$ B) b3 l8 q; r* \$ {9 _; o( T8 p& l' w1 I+ \$ P
RewriteEngine on
6 B8 D% P* G$ y$ j/ u- `RewriteMap lowercase int:tolower
9 q8 f$ V- N: F* q, l' M$ R) GRewriteMap vhost txt:/usr/local/etc/apache/vhost.map4 X& e4 u  X  a: ?# L. y$ D5 j
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
2 w! n& h4 t) g/ N- G5 w+ R" U* ~. ORewriteCond ${vhost:%1} ^(/.*)$
: l. U4 \5 Y8 I6 K$ aRewriteRule ^/(.*)$ %1/$17 \, E- Q8 z9 f

7 R- n. T; x8 S0 ~: i' D  R4 P$ z
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
+ @) c# t5 G9 c) n" [: {然后,在这个所在路径的目录下创建一个文件: vhost.map
0 t, K0 J! G; z, K7 |) k内容为:
0 S! ~3 Z; \4 b. P) `3 Z$ a  z
! @6 ~' `+ ]3 N, Q- ~www.domain.com /usr/local/www/data-dist/domain
2 R  R1 e) W' O6 G& M& ~+ H7 gbbs.domain.com /usr/local/www/data-dist/bbs
' F9 z. L( h* j: W9 Kanyname.domain.com /usr/local/www/data-dist/anyname
2 ]& h5 u" B; L( O% }8 W! U  }$ ^! y, Y9 F, s
以上部分都是:” 域名+空格+绝对路径” 的形式。9 r! e) V1 d6 Y# i$ T: H3 R. G
$ `6 Y8 E5 p, T4 [
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
9 g- v3 \; u; ]' t7 q+ `domain , bbs , anyname 等等,理论上可以无限。
( j) a5 I* @: a" l7 m, o5 m# u  B( p  h  O) q/ M
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
" q3 z. W% }, ^3 z, \, f0 \: y随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
# _7 i4 c. X0 K0 X
( V. _5 W. E( v: L第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。! u4 Z3 @' i6 Y
第二步:打配置文件尾部加上
& M) a  X( H  D" f( b( d9 v! cRewriteEngine on5 n; {3 }" W) m' V, Y
RewriteMap lowercase int:tolower
/ t% t" {- @% {$ k$ K#定义映像文件8 F: N" o& [3 K% w; o0 s1 l+ a; g
RewriteMap vhost txt:/apache/vhost/vhost.map! m9 m" n( w. O5 C, T
#处理变名
- E) ^0 i. l. _5 T. x* [RewriteCond %{REQUEST_URI} !^/icons/
& ]4 u( p9 L+ ^# ^8 c6 xRewriteCond %{REQUEST_URI} !^/cgi-bin/
- T. f' Q; Z2 M6 a! PRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
- w; b& b, e% E0 ~" J% A3 r这里做基于文件的重新映射- _4 d7 z$ D: C  n! M
RewriteCond ${vhost:%1} ^(/.*)$( Q: I, g( e1 H+ I" ~9 V+ n
RewriteRule ^/(.*)$ %1/$1; a/ y# Y, K% ^, r
RewriteCond %{REQUEST_URI} ^/cgi-bin/
2 W6 `( ^5 d+ b6 BRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
9 j! W* B$ P- k4 CRewriteCond ${vhost:%1} ^(/.*)$3 g6 W( [  n2 D, S
RewriteRule ^/(.*)$ %1/cgi-bin/$1
7 p: ]. H1 [5 G8 b' g# S
4 \5 n; L; \, H注意:vhost.map文件是域名和空间映像的文件,格式如下: * ^" S/ h5 ~; o3 G* J$ N
www.abc.com /vhostusr/www.abc.com2 E3 m  f0 U/ @$ W  d! R9 J" H( `) b( ^
www.xyz.com /vhostuser/www.xyz.com
$ ^" g7 W, v0 vwww.cccbbbb.net /vhostuser/www.ccbbbb.net4 h" X5 T' I" w" s" x8 _+ ~
.. E( ]4 F" S& W8 r& e( L
.
% r2 t1 w# \$ D) z2 y( u7 |) t5 {.
; A1 g: z  @7 i  I.
! _1 X5 ^0 V- k: A& c4 b& |(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)5 Z( \0 @/ F: X) y+ ^( [8 y
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~2 q2 ?  {! f9 d/ b  V) ?! ]
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
3 ^; l% Q# V: U, J7 U' ^注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~8 M, K. Q* I& s3 [& W* ?+ B
==============================================6 I6 P( k2 r2 g( Y
方法二、
7 Y5 V  p3 z: _$ C# D
% c0 h  p! n& y4 r% M( V$ w! [. \. E4 e) V* P) ?1 q! m9 M
rewriteengine on  y9 i# w: K4 ^5 U0 s8 `
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$" C3 j4 m; y* _& b. D" W( D/ ~
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
  a5 U7 K) @& Z8 y' C; \rewriterule ([^.]+)\.域名\.com(.*) /$1$28 k9 |5 U5 V9 [. q% C. U8 B. i' `
其他配置文件5 h* c  Q. S' ]# G* D) y# ^
  W) @2 \1 R; l' N- |5 m
接着在DNS中开设一个泛解析到对应的IP地址。
7 r, N/ \0 m$ m0 M3 R$ e* ^- W就可以实现下面的方案。
& y/ q5 J( r" L5 B/ H2 S/ d# B  a& Q3 `4 E4 n5 ~- G
域名:domain.com
8 ?0 U2 c5 q) ^/ n绝对路径:/home/domain.com/3 [2 P# M) z8 @( Y
www.domain.com 自动解析到 /home/domain.com/www/1 ^6 A4 ^' x# f0 h& h% J' ]
abc.domain.com 自动解析到 /home/domain.com/abc/
/ r1 Q* \# J/ R2 s1 _等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
" z% w* A1 Q( y) y! j8 ~直接建立子域名名称的文件夹即可使用。不需重启apache。

返回列表
【捌玖网络】已经运行: