  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14161
- 金币
- 2371
- 威望
- 1647
- 贡献
- 1319
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:. C( z$ Z3 e h
0 _# v1 I7 ]' n- P# B& q
RewriteEngine on
( |% W- O$ l0 Y, e! LRewriteMap lowercase int:tolower
4 B, K O: z8 |% m. C2 Q; ERewriteMap vhost txt:/usr/local/etc/apache/vhost.map
* u* ~% T% c8 e8 u2 `RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$7 @& I! ?4 V6 y
RewriteCond ${vhost:%1} ^(/.*)$
# U1 H6 Z5 g- n8 Y4 p/ D( J$ }4 z6 FRewriteRule ^/(.*)$ %1/$15 s J0 n* l; T. H" X& g& H
7 r% S8 }8 p9 u. X9 X- B
3 k+ u( v3 \/ m" @其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。1 Z( W6 P) w) m
然后,在这个所在路径的目录下创建一个文件: vhost.map# q, y! d8 \) H8 w2 y% q
内容为:& w3 g: G& S0 x' [
! G2 w4 {+ R, h$ Cwww.domain.com /usr/local/www/data-dist/domain+ _+ n* B, ^1 q9 u. F
bbs.domain.com /usr/local/www/data-dist/bbs) M& \( D1 {; t- E& R
anyname.domain.com /usr/local/www/data-dist/anyname! g$ m( L7 G6 W' t
0 r3 D) I( O3 W3 X
以上部分都是:” 域名+空格+绝对路径” 的形式。( u# }1 s: f5 z; a
5 V' q) g e4 l* _: [
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:3 U. z! C* u3 B
domain , bbs , anyname 等等,理论上可以无限。8 e* U7 T7 O: D8 Q1 N& ]% z4 O
( D5 B! e' j" U* r. T, q5 E这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
4 C- {# r2 b$ v i! H随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
' i# \" [( X8 A: e. X' I
1 d" N: `& P$ u9 {4 A! ^1 y第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。+ @7 }) {- {3 J6 i. Q2 P
第二步:打配置文件尾部加上
2 J. }- r8 [3 W/ p; S7 h" ORewriteEngine on+ S7 D. m1 n9 a4 P% x7 @
RewriteMap lowercase int:tolower
6 ~. u! ]8 c7 V#定义映像文件0 }1 U1 y: H( @' C" _ L( w8 I
RewriteMap vhost txt:/apache/vhost/vhost.map8 I. L; w9 Q) @7 m
#处理变名! ~: ]- R# `( H5 V# d+ V8 E
RewriteCond %{REQUEST_URI} !^/icons/7 s* _0 V; K- q3 d
RewriteCond %{REQUEST_URI} !^/cgi-bin/
8 S; c( _# T' U' o m, n8 P$ G0 sRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
0 M0 ^' {6 E4 u* q6 o3 a这里做基于文件的重新映射$ R; ?4 y" Y4 D
RewriteCond ${vhost:%1} ^(/.*)$
5 Z( k1 n' K$ t* f8 ]RewriteRule ^/(.*)$ %1/$1
3 X5 W8 f) U: v z g6 N7 P+ bRewriteCond %{REQUEST_URI} ^/cgi-bin/; l0 u+ c( r9 I( C3 U3 b
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
. P$ w m: {+ L* Q" _: m( A# |RewriteCond ${vhost:%1} ^(/.*)$8 u, g i0 r# K0 w
RewriteRule ^/(.*)$ %1/cgi-bin/$14 x* n, ]3 ]- O! {
7 h2 O y6 I$ [3 U" }& N
注意:vhost.map文件是域名和空间映像的文件,格式如下:
* W( B$ X1 l. r+ ~: {www.abc.com /vhostusr/www.abc.com) k7 |2 n; _, r' T; i: g
www.xyz.com /vhostuser/www.xyz.com
4 h, V3 Y( a/ _! p3 f$ |$ dwww.cccbbbb.net /vhostuser/www.ccbbbb.net& {5 r; r4 `0 y; _
.4 d" `3 a9 b b# }$ j2 B" j
.
; W! o- @2 U* [.
; [" @* E q+ |) L.: C; m0 C# i2 R) |
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)7 a# v, q, @+ d" Y Y! ]0 B& a
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~5 [7 u6 p8 V5 |8 b2 ^6 [ `. J: p
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~" K7 H. E, p0 F# k1 v
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~ n. y- ~8 f/ s2 V1 K
==============================================
9 b, L) g1 e' y4 y1 V/ k* O6 K: d) ]* W方法二、
) T4 h1 a9 n" n) d& I$ [+ c- g* e9 f7 f1 U8 L; J* h7 a
; O' @' G; F* H* y" t, c& Erewriteengine on
" E/ l7 M7 h; R' y' ]: U; brewritecond %{HTTP_HOST} [^.]+\.域名\.com$ t! I3 k+ I& d' l/ U0 L
rewriterule ^(.+) %{HTTP_HOST}$1 [C]2 Z: e9 k7 j) z: I! N* V
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
9 w0 w6 T* _% a, t其他配置文件
7 E4 r$ R" [3 K1 \+ m/ t( Q+ @8 g! k: S$ |
接着在DNS中开设一个泛解析到对应的IP地址。 w& K8 M- f8 C1 Q2 ?; i$ ]4 b
就可以实现下面的方案。- }9 O6 V% H! K
0 {' ~7 E4 q0 N e9 i域名:domain.com* z; ~, d; Q. v
绝对路径:/home/domain.com/' w, Q* Y7 H7 u* L5 H
www.domain.com 自动解析到 /home/domain.com/www/
) c7 \. A2 V$ V7 J4 Qabc.domain.com 自动解析到 /home/domain.com/abc/
+ I. ?4 {6 S% W- |* ?7 V2 F' W$ Q等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹" p3 h7 C% J, t$ f( N8 [
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|