|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14323
- 金币
- 2447
- 威望
- 1647
- 贡献
- 1395
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
2 K/ C' j* g# ?8 n y% m) d( a/ z, j' R1 _# W6 ?
RewriteEngine on, z3 k, ^3 n, {7 F
RewriteMap lowercase int:tolower; D* f8 C3 G" j# Y& ?" d: t. z
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
$ w z3 ^5 H# m. R3 W0 rRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
6 M, U6 [: d% O! ~7 E) i6 kRewriteCond ${vhost:%1} ^(/.*)$/ o; i1 U7 J% P- C {$ |
RewriteRule ^/(.*)$ %1/$1
% D; ~) F- z6 y
, _ N! x# f# g Y2 d9 g7 U- F1 l" \
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
2 a" n" w7 v" J4 s2 m9 ]2 |然后,在这个所在路径的目录下创建一个文件: vhost.map
& ^8 @; y$ G) S/ c4 \. i( k内容为:6 i3 s; P& U4 E* z
2 U- H6 v3 d" W4 s/ X9 |* F5 i
www.domain.com /usr/local/www/data-dist/domain$ z6 A+ Y. Y! d, F( b
bbs.domain.com /usr/local/www/data-dist/bbs: e$ Y' C8 m! A% I2 ]6 Z
anyname.domain.com /usr/local/www/data-dist/anyname% E! A7 t ?; y4 F" i8 ], Y& }
0 U$ W) g' b! `1 a. S; I
以上部分都是:” 域名+空格+绝对路径” 的形式。
: }) z' K5 `# g& V: c3 a* ~
* V% T# w" O3 e* l& y最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
, r1 u, L p2 g) Fdomain , bbs , anyname 等等,理论上可以无限。2 R7 J1 P; J6 p5 a- P3 r
/ }6 ~5 {* R, f4 k: y" \( [" r这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以3 Q5 M3 x" b9 l+ w* O
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。; ?* T! o* C: m- p5 a
7 O H; s$ n" q6 _( X
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
% g" D2 l4 p; C$ V第二步:打配置文件尾部加上, A& ^! |5 e7 y. X7 ~
RewriteEngine on" c' Y5 C, o, P0 C1 H$ J4 i# J e
RewriteMap lowercase int:tolower
/ J& h* C, M+ j3 i& s#定义映像文件
2 v8 M, P3 w: O- h+ HRewriteMap vhost txt:/apache/vhost/vhost.map
, {( O/ |. Q4 u#处理变名
0 @+ [9 X3 h$ Y! z; f; g, kRewriteCond %{REQUEST_URI} !^/icons/
* n9 W( }& B$ eRewriteCond %{REQUEST_URI} !^/cgi-bin/
3 f6 h. _4 t0 W" b% C2 |& qRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
8 X6 a; B6 I( V; |这里做基于文件的重新映射 n9 A) i/ V) {4 j& N6 j; }
RewriteCond ${vhost:%1} ^(/.*)$
* |+ R" w; v) \3 x5 W* [2 QRewriteRule ^/(.*)$ %1/$1. h% s' U5 D. [$ ?' i7 R
RewriteCond %{REQUEST_URI} ^/cgi-bin/
8 M( M* _* G) B2 H! }! c! DRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$3 c! R% S: H, P" J7 |8 }
RewriteCond ${vhost:%1} ^(/.*)$
8 F. t* s" ^: C2 l( a3 D5 |( kRewriteRule ^/(.*)$ %1/cgi-bin/$15 e9 ]. n: N3 d5 ~& s& u
3 b* i; U- j7 e5 s注意:vhost.map文件是域名和空间映像的文件,格式如下: ' g7 ~6 Q" f D6 J+ E
www.abc.com /vhostusr/www.abc.com
8 Z! o r) z& d( [7 i5 a+ |/ Wwww.xyz.com /vhostuser/www.xyz.com+ w) g) Q [7 A' I4 v
www.cccbbbb.net /vhostuser/www.ccbbbb.net
6 |5 t* r+ Y6 J. _" m9 b.
: ^) P, K p4 I$ k.
; Z! T" W, Q1 b( F+ U.
! f: t" b" s& z: P+ [7 |.
* G% L6 ?7 B5 ~(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)$ ~& |3 k' G1 c3 m
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~+ A& B" ^2 ^+ v* f" k0 N) v5 h
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~- W: l- y. f; J0 }4 x& H$ U( x8 Z) C
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
0 F) k# ~, n5 K- c6 g! z6 S==============================================
4 X. h. w7 v1 |: f% V; m方法二、8 a+ u$ ?% Z7 ]7 \; m
& s6 S4 A+ L. k, P& D# b% Q0 K u3 @8 a/ @1 M0 {# G# h
rewriteengine on
/ X+ Y% m0 S- h M( _ srewritecond %{HTTP_HOST} [^.]+\.域名\.com$" k9 g& c4 u1 T3 D! L/ X
rewriterule ^(.+) %{HTTP_HOST}$1 [C]% s8 n# H: J: b; T7 |, d/ H
rewriterule ([^.]+)\.域名\.com(.*) /$1$2( ?: g6 A3 _3 u6 \! V
其他配置文件5 W# O( u, C& M) S! D o
6 p0 [1 F# D# \: e) Z8 Z. H7 R& \
接着在DNS中开设一个泛解析到对应的IP地址。
/ p1 ~* [. |' l6 H5 u. z$ t6 y就可以实现下面的方案。
3 C5 T# E! X1 d' E% U
3 Y5 E' [5 r9 I8 _域名:domain.com
8 \0 N: n; y, d9 X绝对路径:/home/domain.com/
' D- H, m; P' k$ W: s2 fwww.domain.com 自动解析到 /home/domain.com/www/+ ^5 b/ u8 L9 t# c
abc.domain.com 自动解析到 /home/domain.com/abc/
0 S8 e5 B- s/ B4 j4 B" Z等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
" a4 u( t/ z$ I1 X0 x- d直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|