返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
8 }7 \' [$ K7 A' W  E4 O! x& v# ^- N. |4 D& L2 @: U( F! y5 e. k
RewriteEngine on
/ u. e' ^, q& J9 jRewriteMap lowercase int:tolower
1 @$ R9 \% e. y3 `  Y. t( G# ~: K0 ^RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
' o, q6 ~2 V& Y$ qRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
: i" x* G* P' [: oRewriteCond ${vhost:%1} ^(/.*)$+ t; k* J/ S* c- Q
RewriteRule ^/(.*)$ %1/$17 q8 B0 S7 \. h2 O
0 K( {8 F, r+ s+ I! o0 M

8 i5 P! ]2 o' i& j' c其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。- I& q3 K9 R. C1 w* f5 R- L6 ]
然后,在这个所在路径的目录下创建一个文件: vhost.map% E% Q  ^9 A, a) c
内容为:
. K9 Y8 |2 F5 J# y% ^# F  r0 q* a6 S' E2 c+ w
www.domain.com /usr/local/www/data-dist/domain% R* I# M0 F7 @3 B9 @
bbs.domain.com /usr/local/www/data-dist/bbs! P3 m) A% s0 F6 f1 K; ~0 F
anyname.domain.com /usr/local/www/data-dist/anyname3 ~( W5 @/ ]2 l9 j9 ]- O
6 _* C1 G. Z4 K) ]; l" U2 H
以上部分都是:” 域名+空格+绝对路径” 的形式。
/ [' d, k( n. n! d& L
; `. h$ `8 `$ ]5 o7 W最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
9 D5 e; C# ?  t% L5 q% F. Pdomain , bbs , anyname 等等,理论上可以无限。( O: n: U0 g, K7 Z
' d' R% P  R9 R6 O3 J* K6 @- b7 _
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
" `. n. o( p" ^0 d8 }' }+ ]随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。4 G2 r1 s& b1 V; N& \2 @5 p1 Y( C

1 O/ U  j8 n9 z2 _+ z! c第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
+ @/ O+ _4 S) D) Y第二步:打配置文件尾部加上
9 g1 e: U8 _; M: @RewriteEngine on/ d6 Z7 Q* k5 L& Q: o7 Y
RewriteMap lowercase int:tolower5 n1 b) x4 I. o6 z; {% X
#定义映像文件
) A1 J' H* e( Y) Y: NRewriteMap vhost txt:/apache/vhost/vhost.map
4 j5 W. I8 u! A1 X8 c#处理变名6 |' `$ X: A, y4 S. R' v6 m/ ?
RewriteCond %{REQUEST_URI} !^/icons/
' C1 w& r1 T" n2 M4 d- rRewriteCond %{REQUEST_URI} !^/cgi-bin/, G4 Y! F: o* e% C& |( V2 w& y
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
8 @! ]1 m+ F9 S/ b' s# p4 X这里做基于文件的重新映射* h( `* x6 X1 x' ~
RewriteCond ${vhost:%1} ^(/.*)$& P4 ~! o5 }9 t
RewriteRule ^/(.*)$ %1/$1
4 i. ?+ @1 _7 D( x! z; ?$ G* z+ {RewriteCond %{REQUEST_URI} ^/cgi-bin/* I  |+ d7 H7 L# A* U9 g
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
9 `% E: c( \) i3 F  A: J0 J  B5 |* qRewriteCond ${vhost:%1} ^(/.*)$
1 i2 ]  q- j6 m: M, yRewriteRule ^/(.*)$ %1/cgi-bin/$1, e9 d0 I$ ~( p( L' \. m- l2 @0 m

% H% n% E  e7 U* O3 k2 T注意:vhost.map文件是域名和空间映像的文件,格式如下: 
; S% @( O5 L* G- k9 `0 Pwww.abc.com /vhostusr/www.abc.com
- Q6 f, H+ L: j8 h% hwww.xyz.com /vhostuser/www.xyz.com1 e+ T( N$ X- \$ s, b
www.cccbbbb.net /vhostuser/www.ccbbbb.net( [, M* M! C! g* I1 [; D3 w
.
. k- x' s+ Y$ i$ E; F0 o.+ I9 ]6 `; q. D7 v$ x2 \) z
." ~$ ]: y& ?. g) |9 N+ B4 p
.
# s) a6 T+ ?6 _0 |(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)5 P* |  b5 K6 O; W* G  E8 O# Y
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
3 ~5 }3 @0 e" [% h* h( @4 E其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
# T3 a5 `5 H. O注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
3 t2 n1 n' u, I) N/ F6 J/ P==============================================
4 i0 ^2 O3 {4 ~9 `, I方法二、" o5 {4 T, b4 U+ g' L- [) {, ^8 p

5 P5 \& A. {& c* }8 ^/ W+ J" r5 I+ Z0 t/ Z* _5 h8 N% q7 @& V
rewriteengine on! A* [/ R# W+ P' T3 y# F. C  O
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
' G: C: N1 j) mrewriterule ^(.+) %{HTTP_HOST}$1 [C]& }) K7 b/ ?. j$ E1 V! }! y
rewriterule ([^.]+)\.域名\.com(.*) /$1$2/ y7 z6 t- b8 K) W2 B! b) \
其他配置文件4 q! F4 u9 U; p. h8 ?- G% {2 c+ v* e
$ C3 d% [  x. Q1 R
接着在DNS中开设一个泛解析到对应的IP地址。
) s; `' s" M+ \; {2 Y" O! G8 ?; n就可以实现下面的方案。, G+ \& u- L% q
2 x* e! U+ o+ C- ^' w- \$ J4 L
域名:domain.com! \$ y3 o1 \1 z1 F
绝对路径:/home/domain.com/
$ g; A; D7 a/ e7 D- iwww.domain.com 自动解析到 /home/domain.com/www/
; {; N5 R& O6 j6 ^/ Qabc.domain.com 自动解析到 /home/domain.com/abc// X) z/ J& ^6 N4 j. Z
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
; t$ a+ E1 |2 G" d, _& L5 R2 K! [& |直接建立子域名名称的文件夹即可使用。不需重启apache。

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