|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14389
- 金币
- 2480
- 威望
- 1647
- 贡献
- 1428
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:& B# A+ [7 A' H) C
6 J; B& m* v8 B2 t4 LRewriteEngine on
( u4 A) W4 I2 z8 [/ [RewriteMap lowercase int:tolower
0 n. {% ]3 t! n. A7 Q* }; h E yRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
( W1 k7 \4 L! R. qRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$/ P s Y% ^+ `5 h2 f
RewriteCond ${vhost:%1} ^(/.*)$
* k/ B: `* y" n7 E# z3 mRewriteRule ^/(.*)$ %1/$1
% m1 s8 E5 ^. e9 W) Z: m- d& @, ?* r h7 N; }+ ~* c: S: [
! d) J6 Y* }0 j5 h0 k
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。/ F. J& \8 L1 s/ o$ c% e( K9 Q; L0 d
然后,在这个所在路径的目录下创建一个文件: vhost.map1 j- J- C. d( X9 Z7 R0 D
内容为:% Y8 { w$ }5 m& H
8 G( H6 b, n; [) [2 D+ x- g
www.domain.com /usr/local/www/data-dist/domain5 V; l- ~" T- `
bbs.domain.com /usr/local/www/data-dist/bbs% y4 `/ ~8 n d
anyname.domain.com /usr/local/www/data-dist/anyname
# g8 X; o, e3 z' [( S
) Y# g5 I: S3 u" S2 e9 y以上部分都是:” 域名+空格+绝对路径” 的形式。
) ?' G/ Q/ D3 ~% z# j
3 H( L5 m( f( R# ~最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
& {6 D; l6 `: M% j$ t8 qdomain , bbs , anyname 等等,理论上可以无限。
+ J" a, f7 W, u) }& \$ e
* R1 v! z/ ]* n+ N0 k" d6 m8 ]这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
5 v+ C- i% _4 R9 p* j x; o: g6 f随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。! q; D6 j5 S! C/ t0 w- t1 S
/ m# ^9 R& {, z第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
3 E2 v; k8 s2 T9 f第二步:打配置文件尾部加上) L/ u* A- y$ Z, H
RewriteEngine on! S$ j$ Q0 D& f5 l) Q! a
RewriteMap lowercase int:tolower
0 {) T% f( G: c7 s#定义映像文件! v+ F& L5 s- q9 V4 R9 b
RewriteMap vhost txt:/apache/vhost/vhost.map( h+ D" O6 }5 C; N. {- S! e
#处理变名
( Q9 h1 Y+ a' J1 i" M' z, N$ uRewriteCond %{REQUEST_URI} !^/icons/) I) e5 T% v( w
RewriteCond %{REQUEST_URI} !^/cgi-bin/
+ F$ Q) M' c$ k; |RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
6 z6 ?$ w5 s0 [2 ~3 R这里做基于文件的重新映射( W/ j7 A; _0 F4 X" u0 ?
RewriteCond ${vhost:%1} ^(/.*)$4 A4 I, b; v2 ~
RewriteRule ^/(.*)$ %1/$1
4 f# L/ e& w7 F9 iRewriteCond %{REQUEST_URI} ^/cgi-bin/, m- F. J n9 G; I- b
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$ D! ~* x4 Q7 `9 q/ j% W
RewriteCond ${vhost:%1} ^(/.*)$( W U$ H" `" j% p6 I; W
RewriteRule ^/(.*)$ %1/cgi-bin/$1
# m" c4 S$ c! F* q$ @; {& s1 W* _ N1 `
注意:vhost.map文件是域名和空间映像的文件,格式如下:
+ A( [5 ^; T8 n& iwww.abc.com /vhostusr/www.abc.com
7 a K1 K" x; L; ]. \& e9 y% a$ I* Nwww.xyz.com /vhostuser/www.xyz.com
; n) [. T/ S7 u% v8 y; y5 t; Lwww.cccbbbb.net /vhostuser/www.ccbbbb.net
, {* [0 L' _4 ]" Q.
+ w: a4 a$ N6 r( Y* u$ E.( F( O( y3 e3 U) y/ U1 ]# g
.. I. d3 M) x( `
.
' A: R! ]' }, L7 h' |8 n9 v(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
4 o7 e: O# k: f1 U" z第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~; |: a/ X& s/ O# @( f/ @
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
, t6 { U: z8 n; R! x2 ^* R注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
6 V- H# Q: l0 U, z==============================================" i0 Y8 N. J: e$ ?' p) }
方法二、 I, A' T; {' D) C- X' N9 N0 F
H2 H f5 `2 i8 U( m3 U% V. \/ V. M
' p/ j8 @( o5 r u" M+ ^rewriteengine on* \# ^) r" w! m6 G: W/ K
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$: Q1 e. }5 R0 f( X7 f
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
. y) h9 g: |8 `0 ~9 y/ L* r# }rewriterule ([^.]+)\.域名\.com(.*) /$1$2& V% z7 [: k9 `' k. `
其他配置文件4 N; s! x/ y8 |$ K! c
- x5 k) v! N2 z, ~* V' d3 ?* J
接着在DNS中开设一个泛解析到对应的IP地址。+ P$ `8 l6 J3 W6 C
就可以实现下面的方案。
% t: s8 C$ Y) B# X$ Q& e$ h, i, z3 i( _6 O
域名:domain.com
( H% w8 Q$ ?# U6 ]( O3 `6 I1 n绝对路径:/home/domain.com// s0 t; |# ]/ d7 B: c' n
www.domain.com 自动解析到 /home/domain.com/www/' s' P3 {' R1 [' m' F3 C1 D( d* x
abc.domain.com 自动解析到 /home/domain.com/abc/
2 K! {1 f. c4 s) x- K1 ?0 d等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
* P9 [" R" x& B0 M" I直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|