  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14221
- 金币
- 2401
- 威望
- 1647
- 贡献
- 1349
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
* r8 i+ G, q; [3 X! r' j* }! p8 B) V. c8 C4 j
RewriteEngine on s3 N9 i& k" |, P+ D
RewriteMap lowercase int:tolower
! T, ?$ _* ~; u( YRewriteMap vhost txt:/usr/local/etc/apache/vhost.map# t+ P/ P C1 z; h; a0 W
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
6 w! O6 }) t0 ^. TRewriteCond ${vhost:%1} ^(/.*)$9 f; o& u0 e7 v2 {1 g2 W- p8 B+ \
RewriteRule ^/(.*)$ %1/$1
# w, O6 a) m& }! Y+ Z
0 V7 g8 \7 f' o$ {, c
- J5 [ M' @ k5 F d; z' a其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。4 f" {) A9 E3 _" X* a( p# x1 ~
然后,在这个所在路径的目录下创建一个文件: vhost.map" C$ h+ r( g9 R) ~1 y
内容为:- k: z* [6 f# {1 K4 I! ?* v
1 i/ U1 `. T# J$ }2 X
www.domain.com /usr/local/www/data-dist/domain
) `4 Y* S. U, V1 g5 S" Q0 hbbs.domain.com /usr/local/www/data-dist/bbs2 _$ n- z/ j. T0 ~
anyname.domain.com /usr/local/www/data-dist/anyname; K; O- i% C4 u5 g2 s
, S% \' n9 o( O* p+ w+ l. {
以上部分都是:” 域名+空格+绝对路径” 的形式。
$ G1 ~: a) _- N) n/ \8 \) Q2 ^6 Y$ b# G: ?. O1 ~$ c b0 A$ }
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:) l* `. l2 K5 Y* x0 b
domain , bbs , anyname 等等,理论上可以无限。3 S7 q; Z) Q& o4 m9 v. l W
7 K; s" l# W8 D
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以1 H+ ^/ C! K4 Z
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
; k4 h) b- u6 B* |3 A1 Z( o& o% N* E, ~( C5 `; K6 J
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。8 L; P6 D9 B5 L8 ]
第二步:打配置文件尾部加上& B' b- e; S6 l9 d
RewriteEngine on3 B2 w. z; D) V+ Z; i- ~! x- U
RewriteMap lowercase int:tolower
# m) F3 J% i$ D% T- O#定义映像文件; k4 o! m# M7 L5 p7 M) i
RewriteMap vhost txt:/apache/vhost/vhost.map
: H- ~! a' _: z, v2 c$ Q6 @" t& B; S#处理变名
/ e) f2 C$ v- L; w/ _& V. IRewriteCond %{REQUEST_URI} !^/icons/
2 g- n6 U3 ]8 E) U; x- a- V7 X+ _RewriteCond %{REQUEST_URI} !^/cgi-bin/2 n% f" | N; W# a/ T: o
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$, |) r. m7 D' p3 W
这里做基于文件的重新映射
+ B# `: @- n; e& n( g) I7 CRewriteCond ${vhost:%1} ^(/.*)$
; G" q" M* j! w: p3 M8 RRewriteRule ^/(.*)$ %1/$1" y9 S- P- ^' ~- F) D
RewriteCond %{REQUEST_URI} ^/cgi-bin/
1 s ]* f R' VRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$7 U1 }5 K% f( g7 ]
RewriteCond ${vhost:%1} ^(/.*)$
. t% u% C+ g1 C1 z+ ]5 DRewriteRule ^/(.*)$ %1/cgi-bin/$1
7 V6 Q9 c9 x- b) d7 _+ I5 I: Y) ^1 `9 Y; e T0 c. s
注意:vhost.map文件是域名和空间映像的文件,格式如下:
" l" z- e+ J) b6 G! N7 a! Lwww.abc.com /vhostusr/www.abc.com
" [7 ]" o6 H8 F; y1 B5 }www.xyz.com /vhostuser/www.xyz.com+ q5 X) a: S* @9 \. A, H) W+ r
www.cccbbbb.net /vhostuser/www.ccbbbb.net
8 k7 V( z1 O; s.
# u: J$ X ^0 b* n& u. F6 z.
& R$ C9 X: R2 C$ p) l.
$ h. ?- A1 ]+ _' Q" i) I/ X0 k.- n3 u: d- Q1 d2 m5 k
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
, Z. J! o1 `$ b) H第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
" O2 o. w- X" h4 s其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
" o( y) w: g$ C2 s) I3 H注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
6 Q( }0 \& x W; _: U==============================================) ?1 ^+ n! M: ^ e: U6 _
方法二、
) [1 n9 Y) {0 j5 z0 B
; _8 U: l4 B/ f4 |% x
% j+ I: g- L! B) ^rewriteengine on
/ |' k8 b+ G# f2 N. ^/ prewritecond %{HTTP_HOST} [^.]+\.域名\.com$ L$ ]. }( M9 I4 L
rewriterule ^(.+) %{HTTP_HOST}$1 [C]/ E4 a# _$ M/ F: N1 Q" @
rewriterule ([^.]+)\.域名\.com(.*) /$1$26 l3 N/ ]& `- D S0 {, X
其他配置文件# ~$ n& K' C( B6 T- ^" e9 D' X
9 G; Y/ G5 j/ y接着在DNS中开设一个泛解析到对应的IP地址。% w h4 D+ H+ b
就可以实现下面的方案。# U6 Y; p' T w3 W
]5 P0 b8 a+ \8 a% c; n5 u
域名:domain.com1 K4 X' x. D/ h) r7 H* X
绝对路径:/home/domain.com/7 ^; n( ~$ J$ M+ q
www.domain.com 自动解析到 /home/domain.com/www/
* u" c$ ?8 s2 ~abc.domain.com 自动解析到 /home/domain.com/abc/4 B, ^! F7 g7 X* j+ x
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
' H7 y! E+ A' k8 G4 v直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|