|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14441
- 金币
- 2506
- 威望
- 1647
- 贡献
- 1454
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
9 R% f5 Q2 y- c+ [# a7 s; B8 z4 |( }/ ^8 T& d0 o% h0 L0 j
RewriteEngine on" o i3 I9 g" Y# } G9 H
RewriteMap lowercase int:tolower
' \* M1 p' o+ {& uRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
) \; C+ F. H8 u8 h8 hRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
* D% Z: I! c C/ {RewriteCond ${vhost:%1} ^(/.*)$+ K) k0 B- R6 R" e' g
RewriteRule ^/(.*)$ %1/$1
) ]) w. {0 s. `$ N8 A6 _5 I
" a5 ~/ B1 c$ q. m
; ]8 L. h0 j# I其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
" w" {3 u2 J) D2 F! q! ^8 W然后,在这个所在路径的目录下创建一个文件: vhost.map
) I A* e& u8 P0 \! w, @内容为:
y- ?' j; z- e2 [9 ], l4 g* ?. C2 ? R4 d" i/ m/ ~
www.domain.com /usr/local/www/data-dist/domain; u6 Q+ j/ \# f, N( M
bbs.domain.com /usr/local/www/data-dist/bbs
6 U7 G1 K2 K$ s Oanyname.domain.com /usr/local/www/data-dist/anyname
J+ F* s j. R* @0 Q2 e4 R5 A7 R1 X. { |0 ^; d) F
以上部分都是:” 域名+空格+绝对路径” 的形式。
; r+ {2 f: I- v& \, A4 x& X. W6 T' p
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录: q1 L0 n9 N* _7 Q7 q* v7 e
domain , bbs , anyname 等等,理论上可以无限。7 J' b; ^8 | S
* f6 b" g4 K) M/ M8 t
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
9 E" c1 E, A7 e- L- u( P& Z随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
. g7 ?" B1 `( u& y O
8 }, Q2 i, w$ K9 z3 P. k6 x3 p第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
! d1 {; D$ c% A( c4 y第二步:打配置文件尾部加上! X$ }) D t4 l( S0 }% ]
RewriteEngine on
: d7 G3 V; n, s) x# pRewriteMap lowercase int:tolower
# P3 z, `; X! \! H2 \* B#定义映像文件
/ \' P$ G$ e+ U% aRewriteMap vhost txt:/apache/vhost/vhost.map" {# \ B9 [& R) S- Z/ N
#处理变名
8 {2 v- n/ X! L' G' B' jRewriteCond %{REQUEST_URI} !^/icons/
u( p x! T; i; }7 z W2 S bRewriteCond %{REQUEST_URI} !^/cgi-bin/
* }9 O& U1 I8 O' o; jRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
" M: K; w6 Y6 _+ e这里做基于文件的重新映射
( Y7 g! D; K$ U: s/ k PRewriteCond ${vhost:%1} ^(/.*)$) e& Q A. I8 t+ }# O3 _) v
RewriteRule ^/(.*)$ %1/$1: Z1 R0 m v* ^- K7 Y: x
RewriteCond %{REQUEST_URI} ^/cgi-bin/8 R$ J, e# U! W8 N% W% ?0 N
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
3 F5 X9 m# |, G+ [* k' xRewriteCond ${vhost:%1} ^(/.*)$
# ?4 N( f, {$ h9 XRewriteRule ^/(.*)$ %1/cgi-bin/$14 ~ F. ^( L$ k* K6 p/ }
7 i1 i* ]$ c5 A! V( T注意:vhost.map文件是域名和空间映像的文件,格式如下: 8 f/ j' O, w, t' W: h5 q
www.abc.com /vhostusr/www.abc.com
: C( g: v ~" a3 I! h& pwww.xyz.com /vhostuser/www.xyz.com
2 _+ |7 q# t6 @- s2 Xwww.cccbbbb.net /vhostuser/www.ccbbbb.net
! E7 q( J1 ], n$ V% n# C8 h, u.( c% C. q; e) c/ E: k, }# N
.3 E+ [/ Q- w! M; e. P
.
% H; T8 G$ _1 R, L4 L6 R.' W2 \2 c7 b* t, a
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
4 {6 Z7 G ?0 |: ~8 L7 x第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
& | ~' _8 `, a8 v! |其实这个可以用php脚本来完成的,很简单的~~呵呵~~~: q$ D N- Y* ]$ m& U, D
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~, J7 s2 d& j) o4 O9 l9 s
==============================================
; M" R5 Y% g6 v# u7 x% D方法二、
3 U" O$ ]' V& N' x2 L0 a, T, h/ e; q" j9 Q- P1 _% S5 M: Y% w6 C0 a
, G: N- h7 u! y$ srewriteengine on
F, _' k) `9 I4 D& Wrewritecond %{HTTP_HOST} [^.]+\.域名\.com$/ C) Y' }" o* _5 g" D3 b+ C
rewriterule ^(.+) %{HTTP_HOST}$1 [C]& B. I- ^5 ?8 p7 V7 q2 D3 Y
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
9 B/ ?7 \0 {( |0 P. e9 G3 D# z' c其他配置文件9 f) i5 m* b! p& N5 \( i7 _$ e
% s% K3 f* V9 u6 y/ v
接着在DNS中开设一个泛解析到对应的IP地址。
( U* F; H1 I# v* |就可以实现下面的方案。
3 _0 R: v' z* `! d- N2 c: E2 B- n: U1 l
域名:domain.com4 S: U% S, m- q5 F
绝对路径:/home/domain.com/
$ W+ W9 h9 u, z; |; J1 [! C1 xwww.domain.com 自动解析到 /home/domain.com/www/
9 X) l' v/ H: B8 j, O- Wabc.domain.com 自动解析到 /home/domain.com/abc/
6 V2 i$ z" c7 V0 K0 F$ a等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹. k% c; R- O' D! L' r+ R
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|