|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14443
- 金币
- 2507
- 威望
- 1647
- 贡献
- 1455
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
b2 z! v0 S, B) d$ C- L6 C$ {: L! u/ u* P. g
RewriteEngine on3 G- o/ W) ~5 Z( G* d4 w
RewriteMap lowercase int:tolower9 o( ]- `5 L% {
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
0 Y2 k. R6 S( i% u6 cRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$+ q# X/ n% u* Q
RewriteCond ${vhost:%1} ^(/.*)$
! s+ O* W* E1 @8 f: [RewriteRule ^/(.*)$ %1/$1, I1 Y, g- p( v
; }1 V7 H# N }" a7 }8 A. y9 Y6 H( t j
) K: W7 `; }: T8 n其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。* q8 j- T% Y3 }( J `3 b
然后,在这个所在路径的目录下创建一个文件: vhost.map
% ~/ u/ }7 y5 j, }$ h& ]内容为:" P5 D' s' s5 z3 j- c2 Q K
: E" x& U! }6 l1 p2 h
www.domain.com /usr/local/www/data-dist/domain
, N; N4 W9 y. A, _" qbbs.domain.com /usr/local/www/data-dist/bbs
' x+ F9 f2 T8 Wanyname.domain.com /usr/local/www/data-dist/anyname6 m3 [; \0 T; [" h: N( f- O0 Z8 X
2 d! B$ l6 y O) J以上部分都是:” 域名+空格+绝对路径” 的形式。; B* s! O( q! ?# u
# M/ @8 j; \% v2 m. c
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:: j) l' y0 {1 u+ `
domain , bbs , anyname 等等,理论上可以无限。
( n. m9 U, u) t3 W" V: U- E" R: ^; L! D, y8 q
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
2 b4 E# q5 Q4 q+ i( ]* u1 A随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。; _" C# N1 d+ a9 h) J. M. J
! a) }; Q' N6 z- i( z0 K第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。9 ~9 K( |. C+ L; H) @
第二步:打配置文件尾部加上0 ?$ a! Q# h C/ S& q
RewriteEngine on
* b2 t! I7 h& wRewriteMap lowercase int:tolower
( J F7 E) B& w3 t: U, a! K#定义映像文件/ J! l6 T! b9 @* F$ d( X7 C
RewriteMap vhost txt:/apache/vhost/vhost.map. x" V4 W: v& e) W5 D' C% D6 o
#处理变名
5 {7 [. ^! U: W) I4 b8 [. xRewriteCond %{REQUEST_URI} !^/icons/
0 [2 d; E i' Q6 S5 ]RewriteCond %{REQUEST_URI} !^/cgi-bin/5 W& }) G4 f; P" e6 z$ C# v6 ?
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
0 W9 v8 [/ n( V* v- o0 ~; l) V! @: T这里做基于文件的重新映射9 ?6 [- P1 M2 G0 o/ V
RewriteCond ${vhost:%1} ^(/.*)$' Z" t( m$ _4 g& E* v8 Z- a0 I
RewriteRule ^/(.*)$ %1/$1' u* B3 _: V# d9 c. X1 o; x
RewriteCond %{REQUEST_URI} ^/cgi-bin/0 z5 C L! m; V' z* m1 o7 a6 M
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$# j$ O* b4 B! C* B4 \
RewriteCond ${vhost:%1} ^(/.*)$, [5 N' O$ Y: W# h9 Q9 L
RewriteRule ^/(.*)$ %1/cgi-bin/$1) \9 w1 A5 B0 Q" g" z: Y
8 K8 D: m3 j D4 L/ P注意:vhost.map文件是域名和空间映像的文件,格式如下: 2 V( R; ~* x" R( H1 u$ {4 G# ]
www.abc.com /vhostusr/www.abc.com
5 a% A. L& C# X) kwww.xyz.com /vhostuser/www.xyz.com
; W% K! l/ u2 fwww.cccbbbb.net /vhostuser/www.ccbbbb.net; g& G: k7 j# d" x! c g
.) u a! t) t$ y0 |) G7 q& a; {( h
.+ R1 T2 h& Y) {6 {( ~) _! C
./ s1 b; e% f$ [, t" W0 J
.
0 E0 n& M4 r6 k8 ](你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)& D' q4 r$ ?' t" u3 v2 c
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~+ |5 u, d6 j& t' l; \
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
+ G- {3 Y* q5 M: N2 S注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~1 [0 Y( l& R- r/ j
==============================================3 E9 h& W9 ]. W; A3 h0 x
方法二、
3 F- A. U `: A% a
7 [, f! X, G$ L1 v9 [. V+ P
# T, ^. }) m5 C3 Grewriteengine on
% K4 J5 Y; u2 E# C2 Wrewritecond %{HTTP_HOST} [^.]+\.域名\.com$: _2 B) {) m7 k1 \
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
/ V: N* G1 T0 d3 i/ j. S7 Zrewriterule ([^.]+)\.域名\.com(.*) /$1$2
4 y* p7 A5 z3 _1 v其他配置文件2 B% X; x% [( d) b# g. R
* Q, W& O1 y2 ~* E6 T
接着在DNS中开设一个泛解析到对应的IP地址。
9 p; F! j1 @$ L7 [, H3 A就可以实现下面的方案。
S* y! y/ j$ o) w& y6 [
0 ?! K+ P) P5 N- j域名:domain.com
5 E/ a/ g+ [- `, Y绝对路径:/home/domain.com/ {& @9 j- Y% b: E# A9 J8 [
www.domain.com 自动解析到 /home/domain.com/www/
8 v$ e2 r! v% R6 D; ^6 dabc.domain.com 自动解析到 /home/domain.com/abc/
' W) ]) K+ I# q. H等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹) c% l4 {6 @5 G( s4 u3 P8 n
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|