获得本站免费赞助空间请点这里
返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:# p" w5 g- g5 D" H- t% b1 H0 u# F

. F9 Y, n# m7 BRewriteEngine on
  q6 \! G+ U4 G  ERewriteMap lowercase int:tolower# y5 }' U* L4 S8 C3 n5 m) {
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map7 _' Q- K2 R# Z$ W: A& s
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
2 }2 s$ _% @+ v/ z! ^RewriteCond ${vhost:%1} ^(/.*)$
# }% U) r! {/ @, K2 t$ @3 hRewriteRule ^/(.*)$ %1/$1
" Q! O( |+ `2 g% [' B
& r$ d( L, h% i  b) f; a& E/ L. l9 q2 i! E# P
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。3 W6 _2 j) _8 q' @) m" [
然后,在这个所在路径的目录下创建一个文件: vhost.map+ _( l. @4 H; q9 r2 Q. D2 A) s
内容为:0 }6 J8 q/ Z. N' \+ ]! ]; U4 s
5 F- q6 @9 N2 |' V2 B
www.domain.com /usr/local/www/data-dist/domain
1 C' j: t% y6 J. C2 f& R) Bbbs.domain.com /usr/local/www/data-dist/bbs4 h  o  `; G1 B* ~% s3 i( J
anyname.domain.com /usr/local/www/data-dist/anyname
: B. Z: T, B, y; i  H( @6 y7 [5 d3 X$ I' O2 {4 v" [3 R1 C- O
以上部分都是:” 域名+空格+绝对路径” 的形式。
' S' H, S0 ]" W' }' r
8 S4 w0 l$ E% {. @- h) i最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:! t" w+ j1 C. Y: o3 H) O4 H7 _
domain , bbs , anyname 等等,理论上可以无限。
6 d7 j% u/ c$ q! K/ d# u/ a3 F7 I8 G; C* e* L! ?3 w5 t' R
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
! `* ~2 u& O, R7 U随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。6 A) {* N. |. ~! y9 n
: U, K1 N" _5 [7 _4 q
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。% V1 i9 }! z/ a! ^  I7 `
第二步:打配置文件尾部加上
3 r4 f0 {" H/ s; F3 [RewriteEngine on$ d, L- e8 x2 p% }
RewriteMap lowercase int:tolower
$ p( `# @. [, s: C4 a/ ^- v#定义映像文件
! g4 N/ p: @9 w2 y7 j" xRewriteMap vhost txt:/apache/vhost/vhost.map
- z. M: M; W* j; m#处理变名
6 u; b1 q0 q' K" E  @RewriteCond %{REQUEST_URI} !^/icons/
+ t- H2 I9 S1 m; {& }" _' YRewriteCond %{REQUEST_URI} !^/cgi-bin/0 A/ A! B7 h. |* }
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
) @$ v% X$ p' K% }' \/ O  C这里做基于文件的重新映射
: ~2 `6 p, ?  k( s! hRewriteCond ${vhost:%1} ^(/.*)$! _8 l2 e4 \2 x' r8 X% j; x4 G4 C- W
RewriteRule ^/(.*)$ %1/$1
. v& V( g. B) HRewriteCond %{REQUEST_URI} ^/cgi-bin/6 m; U: D2 j$ {3 I/ \- L
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
# [) h9 T/ f/ ~RewriteCond ${vhost:%1} ^(/.*)$- \" L% P$ ?" g, z1 p1 e9 X
RewriteRule ^/(.*)$ %1/cgi-bin/$1
& `" h- p0 n: n. N2 `
6 X) y7 [! Q& R& v* G注意:vhost.map文件是域名和空间映像的文件,格式如下: 
. ]3 `7 x" y. ywww.abc.com /vhostusr/www.abc.com* N0 ]* x+ b2 V. o
www.xyz.com /vhostuser/www.xyz.com9 u; @) e7 b1 u# d/ l
www.cccbbbb.net /vhostuser/www.ccbbbb.net
" M7 \8 l5 N9 p$ N" A.- I6 f2 b# [+ K0 Q
.# C: P- N, Y  Q* h. C
.
: A3 z" v( l* ~! G.
2 Y9 @! V: s, P1 `3 i# M( N(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
9 d* G! A$ o+ F* W1 n, V/ z第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
% F! U1 Q5 Y7 k3 _其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
* x/ N; v4 K! i: ^% w, J( |注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~. g% \# ]! E! D: M4 |
==============================================
1 L" A; I9 g0 t& N3 q2 y1 F2 h方法二、7 B" A% z  O2 Z& L
! S0 v# }+ j# f" g& m! H- _
4 P1 j/ H5 _/ V. O  v
rewriteengine on! _7 }4 Q: _% U3 o2 ]+ V
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$( \* G1 ]) x) v% }8 C. F, ]$ v
rewriterule ^(.+) %{HTTP_HOST}$1 [C]  s; f9 x& f1 j: {- G1 E6 g  m
rewriterule ([^.]+)\.域名\.com(.*) /$1$2& i; }, s7 q& [- P6 ]/ z5 v6 u' U, A) g
其他配置文件' _- \- R0 h! \

; E% t4 c3 H& l& Z1 b! ~6 v接着在DNS中开设一个泛解析到对应的IP地址。5 }) N+ X" @9 f% R7 B7 M3 G6 H- q
就可以实现下面的方案。( a! ?: _9 U: e% H/ X2 h3 t
  b9 z; t  D7 _& D9 o6 x; e
域名:domain.com
7 v1 Z7 D7 l* b$ Z& |绝对路径:/home/domain.com/, ?/ p3 P. H' [1 R" o
www.domain.com 自动解析到 /home/domain.com/www/
+ p  _( O# h  ?/ W; \: [abc.domain.com 自动解析到 /home/domain.com/abc// z2 ?0 g: l7 t( j7 }0 ~' J
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹* R1 H* b' q  u
直接建立子域名名称的文件夹即可使用。不需重启apache。

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