  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14197
- 金币
- 2389
- 威望
- 1647
- 贡献
- 1337
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:/ f( _, [/ O! w
5 {- V# P* R9 I
RewriteEngine on' G$ Y% V3 [6 G- y9 T9 |/ J5 O
RewriteMap lowercase int:tolower) `! _& Q) O r: {. ^4 |: z
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map; i) \, k% p: A( E
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$- L9 v! s$ l1 }
RewriteCond ${vhost:%1} ^(/.*)$
" a" N$ h0 v2 a: J: j- MRewriteRule ^/(.*)$ %1/$1
( Y( @) v H0 Q! }- H! M# m
6 j; z/ X% y/ t2 x7 i! z
; M. V$ `- e/ S/ w/ M* G其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。7 ]. W' W2 U" |" |! b6 R
然后,在这个所在路径的目录下创建一个文件: vhost.map* v+ E* Z% N( H; [; w! }
内容为:
. @7 O& r+ y, l! S1 J+ F* {
' c) E- {5 J! d) Wwww.domain.com /usr/local/www/data-dist/domain
8 L( E0 x4 r4 R+ Y0 H1 ?# B* j; ibbs.domain.com /usr/local/www/data-dist/bbs
, v8 n7 J$ h( U" L+ Z8 J+ ]; ^$ \anyname.domain.com /usr/local/www/data-dist/anyname
% _4 ]6 Z6 s7 Q5 D/ o- m) o/ y6 u+ @- n' n
以上部分都是:” 域名+空格+绝对路径” 的形式。, R. s2 N6 c/ m6 o B( \( m
" H5 i! G: f+ I& i p
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:5 D: C9 m, b J8 M5 u8 c
domain , bbs , anyname 等等,理论上可以无限。
" \+ ^. S% Z% e, u% z( ~
3 Q+ J( [3 H. ^# d; Y3 g这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
& T5 t& J& r: \: W随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
! d3 m, D6 E4 a% y; W3 m. b# c
. F8 m% F9 t: D第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
. m; S8 U6 F* T9 R: Y% d; x' k, k第二步:打配置文件尾部加上
) F% X; y# M8 dRewriteEngine on6 c$ u2 R8 b1 ` [
RewriteMap lowercase int:tolower
; l2 ?) C) k" J#定义映像文件% B+ g' ?- H" f( {9 K
RewriteMap vhost txt:/apache/vhost/vhost.map0 r# x3 L' z9 o% o! W" q
#处理变名8 u6 ]% Z" ^- }7 E% N: @
RewriteCond %{REQUEST_URI} !^/icons/
- [( n/ j5 y3 D2 Z& q0 KRewriteCond %{REQUEST_URI} !^/cgi-bin/
9 {* t; a0 \9 X- I5 DRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$" _% b! z8 f7 ?6 S( [
这里做基于文件的重新映射
; S* v8 v; V. d x4 m3 R! JRewriteCond ${vhost:%1} ^(/.*)$
! h$ g4 n8 `- ORewriteRule ^/(.*)$ %1/$1% d5 \: E2 b& X& V9 `; L
RewriteCond %{REQUEST_URI} ^/cgi-bin/7 ]" S- u5 `0 A) {2 J3 ~
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$2 z( v- F0 e$ N5 Z3 m5 {
RewriteCond ${vhost:%1} ^(/.*)$
# P! J& j, B- R# d7 T* @" dRewriteRule ^/(.*)$ %1/cgi-bin/$1. |5 L& l& Q9 k) V1 a& ~
$ r( |* A( U. T3 U6 g( s- |+ a/ A O注意:vhost.map文件是域名和空间映像的文件,格式如下:
" \/ D* {' m- V. e1 {9 Twww.abc.com /vhostusr/www.abc.com
" m' k7 ~" ^. n* u0 }& Gwww.xyz.com /vhostuser/www.xyz.com( c8 `7 J) d" m0 J
www.cccbbbb.net /vhostuser/www.ccbbbb.net2 O0 J/ b' K/ I* \
.
6 Q, W! W8 b: A9 S. E8 x.
p( `4 B! j6 }.1 o4 o/ E" s" q# n R7 H# Z
.
3 I# z8 {4 C1 E& b(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)! }% V6 v& U: Y" j! [
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
, Y$ i n; a U6 R3 N6 ~* q其实这个可以用php脚本来完成的,很简单的~~呵呵~~~& n Z8 l# B5 X& n' s5 u5 j
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~( r w: }# |! h! P# k' L
==============================================
1 G1 X( E9 {) L! {7 p( [方法二、2 Q2 t0 h8 F: K) g2 c. h
4 v. B* s4 k5 x8 @% f
& n$ M" j$ Q. q) s8 T, N1 A8 orewriteengine on9 j E. s: b- P, \# p+ Y$ W) W5 v, H5 ^
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
+ Z5 b) j/ H4 i+ `$ srewriterule ^(.+) %{HTTP_HOST}$1 [C]/ b) M+ ~" D7 g: `1 ]# P6 k
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
6 k: W" W; }. ~2 y其他配置文件
" G* \- o3 `2 ?1 v' s( v. t4 j/ B8 d' L; P( j6 B B
接着在DNS中开设一个泛解析到对应的IP地址。- W, P' o: O( U/ W1 _& a
就可以实现下面的方案。
$ z, i. g$ L2 M5 {, x0 |2 Z C: {( p3 Q# t* r% S! z/ x
域名:domain.com
5 ?$ d: K& S5 ^* H' n绝对路径:/home/domain.com/
! Y2 A/ z, J% p- g5 Swww.domain.com 自动解析到 /home/domain.com/www/
, G2 C9 r1 i+ Vabc.domain.com 自动解析到 /home/domain.com/abc/
' s# u( B5 Z* e" a" u9 V等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹/ |' L1 x0 d; S6 }/ d1 K5 o
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|