  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14171
- 金币
- 2376
- 威望
- 1647
- 贡献
- 1324
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
, |6 E W/ c; e7 t% N; j2 n) E& f" V( h$ { o
RewriteEngine on) g3 f* ]! p4 Q g" E# @. ~
RewriteMap lowercase int:tolower% N) C6 N' q0 ?% W8 m0 p; P! g
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map) j0 b$ v# Y' C5 Z. A: ?
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
0 ~, l& r8 F' ~* @9 bRewriteCond ${vhost:%1} ^(/.*)$& ?; E9 i1 |( G$ p. E# n
RewriteRule ^/(.*)$ %1/$1) x( @/ Z8 ]' J0 M6 L, j9 U
. ~; \3 [# S, [9 f# c. Y/ w7 y; p; W
) [& p4 k- d, p( x7 S
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
I8 j: r4 p" w$ |然后,在这个所在路径的目录下创建一个文件: vhost.map* n. B3 T# o8 H
内容为:
4 {& ?9 d( y5 z# p9 J) o( y1 I' b0 M% a# ?
www.domain.com /usr/local/www/data-dist/domain9 l$ X- n2 H8 @7 T( I& X
bbs.domain.com /usr/local/www/data-dist/bbs9 L2 R" ^+ t) H6 v' H
anyname.domain.com /usr/local/www/data-dist/anyname$ b. W# ^: Y- x1 _" W s" q
8 d8 s' `% g, s# D以上部分都是:” 域名+空格+绝对路径” 的形式。% r- x# d- T& I/ \1 A* W6 b/ C
^* x- O) i% E- D最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
' w& d& V0 g, Tdomain , bbs , anyname 等等,理论上可以无限。
" J) e" |2 W9 E6 ~' d" K: J; I! H0 K7 A2 C
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以! u X% T* l; \" h, U
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。! _& J2 M3 n. n" M/ K
. M# s! S- ^0 f# r# Y第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
; Q1 [5 w) V/ A' m, B. x4 k# B" O第二步:打配置文件尾部加上9 b3 r- b5 ?2 u6 Z4 r% e; {
RewriteEngine on+ ]7 T7 P8 V5 ~5 m( g' i/ S
RewriteMap lowercase int:tolower
0 P+ x' l8 e+ Z#定义映像文件
0 L Z; \" @: m) |& Q, y8 @3 r7 WRewriteMap vhost txt:/apache/vhost/vhost.map
, K7 ^+ i3 F% f. A- q7 q; y#处理变名# N" o4 I, q$ O& M
RewriteCond %{REQUEST_URI} !^/icons/
* q6 B6 d' P; \8 HRewriteCond %{REQUEST_URI} !^/cgi-bin/
) d0 H7 [8 S4 }" w& t* eRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
: }/ _) y8 w3 [1 b9 L |这里做基于文件的重新映射$ A/ G. F8 ?0 t- a
RewriteCond ${vhost:%1} ^(/.*)$0 |0 p. ^+ U) f q' `' X
RewriteRule ^/(.*)$ %1/$1' O l9 P7 a8 l6 [5 x; t" Y
RewriteCond %{REQUEST_URI} ^/cgi-bin/
; a5 n* W& M2 ^( U/ DRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
+ T S9 p* m0 [7 F, }0 MRewriteCond ${vhost:%1} ^(/.*)$
- Y/ r( i) K* W H2 WRewriteRule ^/(.*)$ %1/cgi-bin/$1* g: L* s& P+ q" x# s
: E p7 q6 d* m7 [! A. l: q注意:vhost.map文件是域名和空间映像的文件,格式如下:
$ L" `. }* r) C$ Q/ H; p$ p* l) |www.abc.com /vhostusr/www.abc.com
j# o$ M0 v2 ewww.xyz.com /vhostuser/www.xyz.com
; z0 Q8 I( D* s" i( g: Wwww.cccbbbb.net /vhostuser/www.ccbbbb.net0 D$ b. i! E( j4 D- A7 O: i
.9 M' h7 ~3 ]* q
.# i" F0 I- M, M q: x# h
.
# Z- I* O1 [& J/ d6 x- H6 D3 P, j% e8 Y.: A% u- a! ]8 [. [) `
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
! p3 A$ G& H6 b, n: `0 M% ?* ]* s; Q1 z第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
3 c9 r5 ?+ o2 L; z其实这个可以用php脚本来完成的,很简单的~~呵呵~~~: y6 Q0 e2 q) I
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~' T* n/ B) L. \8 F' C7 o
==============================================) |: A& W5 @8 ~
方法二、
D; }' i/ T. p# c/ y: Q, @) j I% l7 w% q; s9 g
) d% ^$ F9 P. s' V. a+ \& p! s! Xrewriteengine on
h: n- a0 E, Orewritecond %{HTTP_HOST} [^.]+\.域名\.com$% W% C. k& z9 l
rewriterule ^(.+) %{HTTP_HOST}$1 [C]3 t: o2 v9 V# v& d8 Z
rewriterule ([^.]+)\.域名\.com(.*) /$1$2' P) e- h$ X9 l" o3 n3 t& ~
其他配置文件8 v, \5 f, r0 E1 h+ R/ A7 ]1 l: c
" p% x4 R: U! M接着在DNS中开设一个泛解析到对应的IP地址。
. ?; j% t# D' J4 ` E就可以实现下面的方案。. j* `1 [# p4 l( U/ ~
& f8 }$ m$ E" J* v域名:domain.com/ E {7 Z0 y" N# `& W! Q# F/ I5 y
绝对路径:/home/domain.com/
) p1 m% |( I; o) V7 Lwww.domain.com 自动解析到 /home/domain.com/www/
5 r1 F$ X$ i: f, Sabc.domain.com 自动解析到 /home/domain.com/abc/
1 [. s/ W" q. n( ?3 ^等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹) h9 H0 o/ l% {+ @0 k) Q( N: }
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|