返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
8 ?4 F  q; Z; G; c6 C6 [& l  F; Z" r! O& w! G9 e& q
RewriteEngine on
  S% b6 ?  y% z2 i& M4 BRewriteMap lowercase int:tolower
  o" ~: H- L' ~% |RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
& n) d( c0 b5 [; _, YRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$: L' x1 g$ U0 z- c/ f
RewriteCond ${vhost:%1} ^(/.*)$
# v  d8 ]/ c+ P1 h' ^RewriteRule ^/(.*)$ %1/$1
( q/ a. Q2 W1 P8 q3 N8 U) X7 `+ A. U' F0 l, L/ @. t4 c

& k6 P( d/ V# F+ a! D4 A其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。$ j( h( o3 h3 N" E
然后,在这个所在路径的目录下创建一个文件: vhost.map
5 q7 B8 A# A' @6 B$ C* \2 h内容为:
! `5 k* S/ ?' j" P* m2 t0 d: ?* O- {8 a4 l
www.domain.com /usr/local/www/data-dist/domain2 l3 b$ G. F1 B# }
bbs.domain.com /usr/local/www/data-dist/bbs
# j( Q3 w% D0 g! l# C, c6 U( manyname.domain.com /usr/local/www/data-dist/anyname
& q& l, z( l& o1 i0 F$ n+ J0 l
5 E7 j; y! g: g& D+ c+ u8 r: Q以上部分都是:” 域名+空格+绝对路径” 的形式。1 O- ~' W! ~: D0 p9 d" S/ l
, t4 A3 n) ?# }
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
6 n4 |# q3 x+ j' O3 @  \domain , bbs , anyname 等等,理论上可以无限。# d, R) ^) X  g, ~# F

5 F: \! w9 |$ b. y: M这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
4 \$ Y& Y$ b( A3 o随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
+ ?3 l$ B$ `2 |+ X% i2 V
" P7 m. a% p7 W; R第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
* v1 {7 F8 t8 J& u第二步:打配置文件尾部加上* ^. e  M# M( ?% W* Q2 u
RewriteEngine on
0 h1 U/ B  w8 }$ ~; S, \; @/ sRewriteMap lowercase int:tolower
6 ]& o+ d. {0 u, |2 R#定义映像文件
* {" Z1 _4 Z# y' N( iRewriteMap vhost txt:/apache/vhost/vhost.map
/ o4 Z* l4 B; _8 g" \#处理变名
# J$ z) {* s! ^) B* [8 K' \RewriteCond %{REQUEST_URI} !^/icons/7 F  ]! w: Y* o3 Y/ X" v
RewriteCond %{REQUEST_URI} !^/cgi-bin/
! d8 x; O5 {  ~0 WRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$2 D: v0 i; Q/ H& }, b/ b3 V
这里做基于文件的重新映射+ k- G  F$ S4 P  E! S
RewriteCond ${vhost:%1} ^(/.*)$
1 @! D0 Q3 {- Z" |# R5 {* A' X" x8 R- iRewriteRule ^/(.*)$ %1/$1' Z- l% [) \, _& ?# `  E
RewriteCond %{REQUEST_URI} ^/cgi-bin/8 m" h. a: Q( `' a0 s
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
4 d* S" ]1 x8 `* O$ k( j. L8 f0 v0 sRewriteCond ${vhost:%1} ^(/.*)$
7 C+ ]3 `$ h4 q/ B' C$ ]4 |+ cRewriteRule ^/(.*)$ %1/cgi-bin/$1
/ W; ]/ ?3 M" V4 C* \" H3 r! ?  u3 ]1 T% _2 q. D
注意:vhost.map文件是域名和空间映像的文件,格式如下: ' u& }; [- e/ }7 |4 G
www.abc.com /vhostusr/www.abc.com
5 Z( g7 x5 u% n' R; ywww.xyz.com /vhostuser/www.xyz.com& G. O2 U/ D" I* q3 {: J) r# g* f* I. Q7 g' }
www.cccbbbb.net /vhostuser/www.ccbbbb.net, \# J; k4 b1 s
.5 ^* n( Z& ]- q% t9 B
.! T) p! r7 v2 t* g* v$ e- v
.: s1 M6 z& i5 _/ X' w4 @
.2 L1 m2 s& m2 |' u4 \4 ^- C/ M
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟): S8 N* e7 s, `; d$ f4 g* Z
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~8 u/ E( s( z7 N
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
0 o: r  Z& O: {* D0 \. @4 o注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
5 s) \" _  N8 M4 [8 j. c==============================================
; R6 L7 j- D0 x6 J方法二、
/ F$ _& d0 a( @" ]! e
( i$ m# u% a* G/ z1 o& P. V0 u, W# U
rewriteengine on- L2 {+ W& Q( f
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$9 G5 q- f: X- c% T" F# {9 o) t0 r! h
rewriterule ^(.+) %{HTTP_HOST}$1 [C]1 d- t' l* C+ Z4 |+ \) C0 J1 f
rewriterule ([^.]+)\.域名\.com(.*) /$1$2- y9 K2 T& k  u6 P5 `
其他配置文件
% @3 \' G6 y9 k" k6 ~! N7 J
9 z" B6 M7 d% m6 ]5 }4 e接着在DNS中开设一个泛解析到对应的IP地址。
# q3 P, R4 `) [$ u# L: b! p就可以实现下面的方案。  J4 F& u3 B# N. q2 Y& s
5 Q  \. Q+ q* i
域名:domain.com4 D& Z4 n% d) h" @( R. Q
绝对路径:/home/domain.com/* O8 _6 L$ E/ n$ a! ~' e+ m4 V
www.domain.com 自动解析到 /home/domain.com/www/
3 Q  M+ }; J! U; Uabc.domain.com 自动解析到 /home/domain.com/abc/: n; d2 f; R/ f6 W  N8 |2 W# u
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
1 r& `8 ]9 M5 k& X" i6 L( B4 F! P6 ~直接建立子域名名称的文件夹即可使用。不需重启apache。

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