标题:
独立主机Apache 配置二级域名
[打印本页]
作者:
admin
时间:
2009-4-26 19:44
标题:
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
0 l6 c' x- y% ^! E9 ?
% J' F0 l; \. p3 j- A4 l
RewriteEngine on
" u" r) I* n; S
RewriteMap lowercase int:tolower
5 u) F, g& k0 O0 C! v; g1 o
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
9 t1 d" m. t! O
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
+ k; J; w' z X6 A2 h2 s1 a
RewriteCond ${vhost:%1} ^(/.*)$
7 w1 A* }% D$ I/ h! H" m
RewriteRule ^/(.*)$ %1/$1
9 a1 ?5 I2 ~# L, f4 t' }: i
1 m/ b. I H5 B" ?
) W0 ]& m/ `" C' e* X4 [; b2 G
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
5 O0 A! b' x) v" K, c1 P, d0 x8 V
然后,在这个所在路径的目录下创建一个文件: vhost.map
6 R7 f* w; w! ~; l: d
内容为:
+ l4 \; ~, ~( K6 h" n& q/ h( N
# g" Q) k+ _. L6 d% W/ L/ w
www.domain.com
/usr/local/www/data-dist/domain
& }- D. M( Q' m7 {) R% r |
bbs.domain.com /usr/local/www/data-dist/bbs
8 F+ y! u g$ k8 Z j6 H
anyname.domain.com /usr/local/www/data-dist/anyname
/ J5 D* `: X/ V/ }+ l* g
' D# j9 a6 |" ?2 {, Y
以上部分都是:” 域名+空格+绝对路径” 的形式。
0 |1 N b3 m9 s, m* }
0 Q4 |. X5 l4 e7 h; E F
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
, G: Z. e- y; @. z
domain , bbs , anyname 等等,理论上可以无限。
! t& X9 f4 U% g, Q( U
" i1 R8 B3 V8 z+ a V% q
这样,通过浏览器,访问
www.domain.com
时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
8 k/ y* C/ ?. W4 ^ b
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
0 {9 m" t/ O6 K: m
5 g& g* c7 U p* q. f
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
" @4 `( l& A, ?5 O
第二步:打配置文件尾部加上
0 J1 [8 k) K; p8 E
RewriteEngine on
' Y% U D* h, d
RewriteMap lowercase int:tolower
4 K! q: d6 w& \% h) r
#定义映像文件
' Z2 f9 M# n$ Q
RewriteMap vhost txt:/apache/vhost/vhost.map
. {2 l* r9 e0 O( _2 p
#处理变名
7 K: p- e0 N1 b, i* d
RewriteCond %{REQUEST_URI} !^/icons/
6 H4 A* e0 t' e7 e
RewriteCond %{REQUEST_URI} !^/cgi-bin/
3 \0 o* e! W% T! o4 r8 X& A
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
1 j) d C9 p& z" F. m: l
这里做基于文件的重新映射
3 s. Q& H0 u5 \0 g; j3 m
RewriteCond ${vhost:%1} ^(/.*)$
- o6 Q" X( _ x6 \- G, q- J
RewriteRule ^/(.*)$ %1/$1
R1 n2 ~+ k( K1 Z0 l5 r/ S
RewriteCond %{REQUEST_URI} ^/cgi-bin/
' J! d. S7 A4 |7 L
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
A' I+ B) w# S' ~2 S* ?- {% {
RewriteCond ${vhost:%1} ^(/.*)$
* n& |9 U6 X a# K. p0 {4 O! o
RewriteRule ^/(.*)$ %1/cgi-bin/$1
/ k+ w1 j6 V' p- H# f' E
6 f5 B- G/ f! U$ p
注意:vhost.map文件是域名和空间映像的文件,格式如下:
# {4 F+ Q$ H) O
www.abc.com
/vhostusr/www.abc.com
1 Y+ Z/ Z0 m$ k, G) _
www.xyz.com
/vhostuser/www.xyz.com
5 B$ P: o8 B: E1 |. Q+ Q; M8 [
www.cccbbbb.net
/vhostuser/www.ccbbbb.net
L, V$ q$ V7 o3 E( A9 l0 o& P
.
, S* c+ Y2 N2 g- d
.
" L1 U( e% E. P. }: d; r, H1 k
.
1 L& z3 h+ A2 s# k
.
8 a9 S% a% z1 l: Z4 Y
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
; x7 Z, s) p% M4 P
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
, ]- I7 ?3 i9 C+ d5 G
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
9 j: E1 L+ |; g! L+ k3 J1 |9 T
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
2 J0 P% y. M5 D; |, f3 x
==============================================
4 h4 v7 A" F' }0 O
方法二、
6 @+ w6 o( |8 U3 r! v3 |
2 T6 C# D( J, n
% Q# y- N" @7 m5 N* ^
rewriteengine on
0 W4 f! _. O. |( _
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
/ N% L8 k' B, J1 V3 ]* t" Z
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
8 [# b( _( c- p8 h' f
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
" h9 j( f( R1 ^. |
其他配置文件
+ V+ }' K) |% C6 p
7 m$ b. M$ G" {% s4 p
接着在DNS中开设一个泛解析到对应的IP地址。
4 J; g# A- t5 n* k4 w
就可以实现下面的方案。
" s0 @0 p B& }6 G' V. C
6 z7 ]; w B3 B$ \$ t2 w
域名:domain.com
9 |- d! B; s, [8 |( k+ Q4 q
绝对路径:/home/domain.com/
8 L' x* F7 y! Z+ |
www.domain.com
自动解析到 /home/domain.com/www/
6 [ V- J0 G+ j
abc.domain.com 自动解析到 /home/domain.com/abc/
, Z* m& a0 s9 U7 x/ h& b
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
8 B4 S+ o7 g2 h g
直接建立子域名名称的文件夹即可使用。不需重启apache。
欢迎光临 捌玖网络工作室 (http://www.89w.org/)
Powered by Discuz! 7.2