  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14247
- 金币
- 2414
- 威望
- 1647
- 贡献
- 1362
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:6 |) @* |! u0 `4 {) ~( k" x8 k" y/ n
$ {& P9 x6 u3 R0 M0 U. O
RewriteEngine on
b( Y5 U9 ?' z. k. R8 YRewriteMap lowercase int:tolower' w" R% c9 K6 ?0 |/ J! K- ~
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map' g) }: y$ n" ^- x
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$. s9 Y& e7 Z" R
RewriteCond ${vhost:%1} ^(/.*)$. U4 K$ o3 M" \5 V% o% c; Z6 U
RewriteRule ^/(.*)$ %1/$1: k5 x* j6 J' p: @/ f
0 K' x5 a! K0 s" y* g; B; s. P, F' G& w* @) u/ h) G
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。& B- [/ |+ U$ c2 p
然后,在这个所在路径的目录下创建一个文件: vhost.map
8 x* B, W* W4 F内容为:* u+ ?; Q: c' J& ^! B
. K; P$ ^% S4 c/ U. D* w) s% B
www.domain.com /usr/local/www/data-dist/domain/ G$ I1 }5 a! a; T' Y
bbs.domain.com /usr/local/www/data-dist/bbs& S' Y L4 @. G% f( o! q3 d2 P
anyname.domain.com /usr/local/www/data-dist/anyname5 l8 p2 ?# ^1 K. @/ b" ^1 ^; v3 R
' x9 M, X4 G5 s5 [
以上部分都是:” 域名+空格+绝对路径” 的形式。& {7 c" m( M! C& \
: Z. J- B# `5 D) ^9 Q最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
5 c9 F2 A7 S0 X6 w8 U$ L# J. I9 S" tdomain , bbs , anyname 等等,理论上可以无限。
' l# V7 F2 m$ Z
/ R+ ]! m9 B) Q) g1 y这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
9 L1 N4 m9 x7 a/ D随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
0 h) E3 P- G" g. y2 N5 s x0 j& y" V" Z- p; k" O
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。' ~' o4 j. X- Z$ i9 |
第二步:打配置文件尾部加上, g2 w5 m4 E2 L. l2 \, G) v m
RewriteEngine on
( F J+ M0 |$ q, aRewriteMap lowercase int:tolower
. a$ ^5 ^- T; ?; ?% L#定义映像文件/ B2 i @. ~6 A3 ?% @8 F
RewriteMap vhost txt:/apache/vhost/vhost.map
1 S3 C( O/ H( W#处理变名) E" M* w. ^" g% W2 }% S. r! e
RewriteCond %{REQUEST_URI} !^/icons/
" y" x% f# M8 V7 `) ~7 ERewriteCond %{REQUEST_URI} !^/cgi-bin/2 t- }$ a& e$ q
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$# L. B* t6 @; w6 u8 B+ `
这里做基于文件的重新映射4 o) h, K/ r& [; M1 W
RewriteCond ${vhost:%1} ^(/.*)$2 u" b- U9 f: G4 ?/ \+ E
RewriteRule ^/(.*)$ %1/$1
3 e& d* R2 d( j! v* j" ?RewriteCond %{REQUEST_URI} ^/cgi-bin/
' R5 T& d2 ~5 d- ]7 xRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$ T6 X5 ]4 [( N& @
RewriteCond ${vhost:%1} ^(/.*)$# J0 p! \/ u& Q5 j9 x4 q- r0 f
RewriteRule ^/(.*)$ %1/cgi-bin/$1
, y& r( [! [# j' H1 ]7 t7 \5 b* Z0 O
注意:vhost.map文件是域名和空间映像的文件,格式如下: $ a4 w' A" |- S. h. A
www.abc.com /vhostusr/www.abc.com; e" X; P6 g3 |9 ^ A
www.xyz.com /vhostuser/www.xyz.com; w- u" ~, \! Y, R, l( l" f
www.cccbbbb.net /vhostuser/www.ccbbbb.net
+ O5 N5 F1 H2 v; p v.
1 m8 W* D0 J4 C/ C- J9 N.+ a+ g/ ~1 H* a7 K8 l
.+ X; |' h" r# d$ f! k
.
+ k. _6 w0 ?- i( W" @1 q& q/ l(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)4 K: z9 Y F9 k" V7 t9 L- T
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
: f$ ]9 N; C! G( z" X2 Z% \8 _其实这个可以用php脚本来完成的,很简单的~~呵呵~~~( Z) b7 f) r8 \/ p% }
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~4 | x% s+ U3 ^
==============================================
8 ]9 C; W( I3 }' ~# \方法二、, l; V3 J9 ^8 A
4 k+ [# O. t2 G6 j' J2 y( S# m/ i8 Q E1 Q4 V
rewriteengine on3 w% R' G9 t7 l
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$" F7 I, D, [ B# E
rewriterule ^(.+) %{HTTP_HOST}$1 [C]2 S3 v4 b* z" k6 t8 O0 i$ B
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
! I; {" H) _5 `: h) O其他配置文件
0 ^% @! `2 l" n& z u/ j7 R
: {) G' s* E4 Z; V7 R5 X接着在DNS中开设一个泛解析到对应的IP地址。) h8 d; ]' N& }+ {: y& |$ B7 @
就可以实现下面的方案。* f5 u) @$ r6 |2 U) ?0 q
$ f& R7 F& V) J+ i
域名:domain.com
& G: w, u% t, C绝对路径:/home/domain.com/ ?* h( ]/ ]. ~8 l% X" A3 _
www.domain.com 自动解析到 /home/domain.com/www/; ]# _8 f# p# \/ M; @; Q% D
abc.domain.com 自动解析到 /home/domain.com/abc/0 _: ^- P0 O! G
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹" R" U9 ~" B1 z( Z1 W
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|