|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14387
- 金币
- 2479
- 威望
- 1647
- 贡献
- 1427
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
( j* ^- o- o9 z6 Z' J3 q9 s6 |, c- I5 N2 [/ ~6 \
RewriteEngine on
1 n7 ^6 J; _7 D! oRewriteMap lowercase int:tolower
( y2 o0 }. s$ f( c0 q3 wRewriteMap vhost txt:/usr/local/etc/apache/vhost.map8 y0 L* Q6 e4 E; ]2 O( ]: m- X
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$8 B* R* e. {8 E( Q/ C( p) t8 e$ _0 [
RewriteCond ${vhost:%1} ^(/.*)$2 T4 B/ V- K+ S( E* }! C, J
RewriteRule ^/(.*)$ %1/$1
/ K6 k/ Y, w2 ~* m8 u8 D
7 m" O; o* C' F" j) b
! N n8 ^2 h' P' K其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。# R" j% W/ S3 r9 _
然后,在这个所在路径的目录下创建一个文件: vhost.map0 c$ j7 {! H! b0 e, M- \4 p
内容为:4 y1 y4 I6 @" z: i9 @- ]; y& S7 x
" W3 k- h' _. U! Xwww.domain.com /usr/local/www/data-dist/domain4 R/ [! D6 ^3 G+ A$ u: |0 h# M( W
bbs.domain.com /usr/local/www/data-dist/bbs
. B+ f( \3 v+ W& D& B# _anyname.domain.com /usr/local/www/data-dist/anyname
! w% N3 E7 O/ [, |, }& e" L+ N2 J; l7 m( Z& x/ ?% o3 X7 S/ [: f+ ~# L
以上部分都是:” 域名+空格+绝对路径” 的形式。6 Z! B1 g/ y" z, [' Z7 E
# d) P. p$ A' K. ]. d5 J! N
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:6 A( A% u, x( X8 m
domain , bbs , anyname 等等,理论上可以无限。
1 v. H+ g, f+ E' s
1 u3 {% y4 y" ]+ w9 J这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
) G' s- `+ ?8 `/ ~$ O7 Y随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。/ e& q0 [9 N' n! W. w% V! P) ?1 I
' n: q i7 C2 E3 X( z
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
4 j& ]/ ^( y8 D- k1 M! u0 C, S第二步:打配置文件尾部加上% M5 q& F' l, C$ N9 `% y" s# b
RewriteEngine on
4 e3 b9 Z& n( X4 X& p: I6 RRewriteMap lowercase int:tolower( e& C' m5 ~, Q/ Y7 ^0 @
#定义映像文件, k% d# z( T- M3 ~- M
RewriteMap vhost txt:/apache/vhost/vhost.map, ?- e+ M! @+ B% A
#处理变名: `; w3 j; S: I$ w
RewriteCond %{REQUEST_URI} !^/icons/% h/ }! n) M4 y& O% P; O
RewriteCond %{REQUEST_URI} !^/cgi-bin/7 `5 z* _2 b- D1 p. @
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
: ~3 i6 w! G3 | L- i这里做基于文件的重新映射6 k& H& |( B$ w4 `/ Z1 b9 R
RewriteCond ${vhost:%1} ^(/.*)$
* j* J% H/ m% `RewriteRule ^/(.*)$ %1/$1
3 [) M6 G2 g) H# | ^RewriteCond %{REQUEST_URI} ^/cgi-bin/2 h) ~% u6 t! i% G. h) _9 n) [& c
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$: \4 H. W2 T( u3 C* p
RewriteCond ${vhost:%1} ^(/.*)$
' P+ y- L+ Z9 b1 c* C0 HRewriteRule ^/(.*)$ %1/cgi-bin/$1
8 B a) N+ t" m7 X8 K: a4 E2 m# b& O
( `. B5 f, X$ m注意:vhost.map文件是域名和空间映像的文件,格式如下: ! F# s4 g) r4 z( W' a
www.abc.com /vhostusr/www.abc.com. Q6 z; ]) @2 b: ?
www.xyz.com /vhostuser/www.xyz.com
7 H! h9 Y$ o% L$ j; Vwww.cccbbbb.net /vhostuser/www.ccbbbb.net
* k2 v6 i+ }9 v4 S! a; P.
$ I5 p- q7 p* v9 G.1 o" O9 J9 ]/ X- M
.3 N7 r( i2 |& |8 {2 p
.% l% I: h1 n$ L/ q: s/ F
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
6 O; `" F! U2 L第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
: F* p1 ~5 G& j7 ^+ }3 M其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
G" r3 [4 @# X8 @* y# b! Y注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
. A0 i' O4 A2 |4 \2 H' ?' J==============================================% |* X9 D- [' x5 O# u
方法二、
+ a5 g# Q, m( ?$ W
m1 N1 X% ?, K* f2 X8 _+ h; l! J% D, I- }) y2 b5 B
rewriteengine on
% Z. I. L' ^0 Y" L4 jrewritecond %{HTTP_HOST} [^.]+\.域名\.com$; m! a4 ~* L8 n. k1 b: ~: r
rewriterule ^(.+) %{HTTP_HOST}$1 [C]+ ^6 n2 D4 b, p* n
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
4 o1 V A; F: I( h1 {. j3 f其他配置文件; J' Q: w" g$ T# m+ \, e# I5 a9 a
. \- c# z+ u$ n+ U& z接着在DNS中开设一个泛解析到对应的IP地址。6 ^9 h( i! P% a
就可以实现下面的方案。
* W" n, K/ B1 i) ~1 [: ^1 t f2 @; _- b( B& c4 Z
域名:domain.com, l' T4 T3 T. Z' }% {1 R2 ~$ f
绝对路径:/home/domain.com/
3 i: |/ A' R$ J2 A' D% @www.domain.com 自动解析到 /home/domain.com/www// I$ W6 [( z" o8 B: m# z9 \* p( N
abc.domain.com 自动解析到 /home/domain.com/abc/! V& S% C6 P) o' n
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹) s. `1 ~) U/ p
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|