|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14443
- 金币
- 2507
- 威望
- 1647
- 贡献
- 1455
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
) @* ^; V8 J/ d0 U( M) m- X, D' ^, e; g: @5 Y- Y
RewriteEngine on7 A$ E; f% f% L3 r- {
RewriteMap lowercase int:tolower' K0 j9 N% } D
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
: ?8 ^* o' {4 [3 c3 k$ U" bRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
) G8 C' D8 }6 N1 B3 ?9 Z+ N. D% cRewriteCond ${vhost:%1} ^(/.*)$
3 F0 U; j* p4 ~ D0 k0 n5 a( WRewriteRule ^/(.*)$ %1/$1
5 h/ B9 D" U. E9 a
( @9 X# V2 y: P
: X1 i/ X/ |6 u6 I( l7 p6 g其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
! |: W9 r; M. G9 d然后,在这个所在路径的目录下创建一个文件: vhost.map. f r* `( a$ K5 E
内容为:1 u2 K( g, x# X
2 X& Q0 y4 C( P* z" ^7 p1 B( }) T. T
www.domain.com /usr/local/www/data-dist/domain' |( e. C; N5 a; V2 |6 M
bbs.domain.com /usr/local/www/data-dist/bbs
3 I# g6 i* c! }anyname.domain.com /usr/local/www/data-dist/anyname
9 ~" O$ D" ^- X6 G' X6 B
' l, m! {5 b- x$ j4 H% A以上部分都是:” 域名+空格+绝对路径” 的形式。/ @3 W5 x" W8 j3 H7 \9 T
2 p) K' }6 N4 t7 J最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
3 b) Y/ F5 ]3 F' @6 Adomain , bbs , anyname 等等,理论上可以无限。
5 G7 f E9 H* E- P( U0 B7 K3 y7 s" A: `, J, e% n( j# O
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以% ?( ?( y+ s6 L8 @) `% S4 m+ M% X
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
M! n% D4 \4 V) d8 V( V1 y/ z: D
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
% w2 r; t6 ]" x% Y. r, C( F2 [第二步:打配置文件尾部加上
/ a. s" d Q$ O) hRewriteEngine on
& Q6 ?. P3 C1 t8 [8 i$ Y) IRewriteMap lowercase int:tolower
7 ~$ ^# V v, B/ ~7 _2 Z. j#定义映像文件* C; o5 b- j1 U" S
RewriteMap vhost txt:/apache/vhost/vhost.map* N, a& G U. K9 ]2 l2 O
#处理变名( H7 q4 x; U6 ^' j3 `
RewriteCond %{REQUEST_URI} !^/icons/
+ U6 C8 b7 r! A( r( S) U! G0 xRewriteCond %{REQUEST_URI} !^/cgi-bin/
* d# Y0 ]6 j& A/ a/ x4 W0 K- b! GRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$8 d5 R" V( B0 |9 f& x
这里做基于文件的重新映射 w% m) c1 N$ S5 a4 o. }% k$ i
RewriteCond ${vhost:%1} ^(/.*)$+ l2 M: h5 Q! e+ }+ m! U7 s. W
RewriteRule ^/(.*)$ %1/$1
) i) N" a$ Q: R7 ZRewriteCond %{REQUEST_URI} ^/cgi-bin/7 n9 s: e& w" d: E, F+ V4 q
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$! p/ h. O+ ?, z0 N( X$ B0 c2 s
RewriteCond ${vhost:%1} ^(/.*)$
/ f$ \' t& t2 X; y5 d& zRewriteRule ^/(.*)$ %1/cgi-bin/$1+ ~! H0 z5 }8 S9 n$ U( E
9 x4 [" A" }6 _& \( N* P: I注意:vhost.map文件是域名和空间映像的文件,格式如下: + j n' h, B; y& C8 x/ G
www.abc.com /vhostusr/www.abc.com
4 S& V( D! F3 i* s2 ]5 K, Fwww.xyz.com /vhostuser/www.xyz.com: }/ g l' P% x
www.cccbbbb.net /vhostuser/www.ccbbbb.net# [, d* f6 _9 z& U; l
.
3 f/ A! {' F ~# D' S) h8 |.$ H* t. U5 D; n
.
0 b* d, Z* H# G.
/ c& Q( P5 m: Q2 j8 }' Y3 G(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)1 S$ c! z3 {' `, l: r" @3 g, L
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~* }7 D: A& p$ e- U2 h8 m
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
2 r2 l X8 m! A9 V注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
- `( K9 h1 V+ z==============================================' f0 c, C) A" C
方法二、3 ?7 M- G. Z7 s7 f$ F( f
9 @9 k w3 `7 |% w
K+ T, B) L" C" E
rewriteengine on
. W7 k# t2 g2 D3 y0 t) J) Y" prewritecond %{HTTP_HOST} [^.]+\.域名\.com$6 G! T+ k" z* ?, i" C; t" D1 G
rewriterule ^(.+) %{HTTP_HOST}$1 [C]6 @0 @# p4 T0 l ]5 y
rewriterule ([^.]+)\.域名\.com(.*) /$1$2) x1 ~4 w) K S+ k: |
其他配置文件# Q3 M) j4 p0 p! d7 {5 Q) a
: Q* [$ s. f, ]1 t
接着在DNS中开设一个泛解析到对应的IP地址。1 m7 D1 Y) }4 z' n- A3 i; w
就可以实现下面的方案。0 S! u) I5 l. h* ^- a C8 T
2 Q( @' C6 t4 \4 i+ g2 y- u- m% p域名:domain.com
$ q, m6 s$ b5 Z# j绝对路径:/home/domain.com/6 D1 u1 i) S: X7 B3 o2 l
www.domain.com 自动解析到 /home/domain.com/www/: ?+ P' j$ I9 e. u7 m
abc.domain.com 自动解析到 /home/domain.com/abc/) R% L) S9 t' p- s* r& o0 @
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
6 R1 T7 s: h' j& b. Q5 D直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|