返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:) H( F- w- L& |5 ]

3 r; |3 Y/ w9 D3 f0 Z+ P1 J" jRewriteEngine on. f/ @, _3 f2 y' P, ^3 B
RewriteMap lowercase int:tolower
2 e3 B- }* e: mRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
9 x; }- G# W. T" BRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
, N6 G% j. v+ CRewriteCond ${vhost:%1} ^(/.*)$
0 u0 {: }& x  `5 b2 W" c5 o( nRewriteRule ^/(.*)$ %1/$1$ S8 h7 V& X0 f$ z2 x
/ k: D0 m1 ]7 T) M9 S

* c* |, l* t, N1 j其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。% i: _: q* t1 y
然后,在这个所在路径的目录下创建一个文件: vhost.map
# k2 g/ F! x% M1 u4 V内容为:6 E2 r6 P2 _' D, K, d) Q; |
- I9 g' ]5 @) m$ C# U
www.domain.com /usr/local/www/data-dist/domain' G. K; _7 J+ l* [
bbs.domain.com /usr/local/www/data-dist/bbs# S0 F( a" \, x; u  V
anyname.domain.com /usr/local/www/data-dist/anyname
, t6 f* F' [$ D4 m! y2 @  [+ A8 p' j/ v& I
以上部分都是:” 域名+空格+绝对路径” 的形式。
( L) p% `, |' `. ~' E2 ?8 E# l8 L* }8 K* n8 ]6 Y: \& u1 m) ^9 O+ o
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
2 i# r9 f7 F# Gdomain , bbs , anyname 等等,理论上可以无限。+ G+ G" Q. _2 P+ c

/ x+ s1 W4 n3 Q, u; ^$ R这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以( [$ p' t8 b; |8 O# q' `, {
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。( U# y! ?4 s2 j: d0 V

# B0 }3 D& O" o8 L2 u2 c: R) T第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。; Q2 t8 B. g" ~( l. d% ~  P6 A/ b
第二步:打配置文件尾部加上
; x, r) i( e4 B$ D* [4 R4 W% VRewriteEngine on
6 `; w: v+ T8 q( bRewriteMap lowercase int:tolower
9 g) G- W! W! f3 u( S) c1 ?  O#定义映像文件
2 p* e  @8 z9 x. c6 j1 B9 dRewriteMap vhost txt:/apache/vhost/vhost.map6 B$ `% ?/ z/ ]5 B
#处理变名
# U" i' J& M7 l* s0 E9 d' }RewriteCond %{REQUEST_URI} !^/icons/( B3 J& A2 U. Q7 `: r7 Y2 u( ~
RewriteCond %{REQUEST_URI} !^/cgi-bin/7 H6 I4 H( V: k$ x6 x9 v
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
5 Y. b* ]7 k- o8 h; x7 X& U这里做基于文件的重新映射
. w+ a3 @0 d" l' s/ l4 GRewriteCond ${vhost:%1} ^(/.*)$
9 A  L8 a+ B. X# W" ^- n" ERewriteRule ^/(.*)$ %1/$1
& ]  i9 X2 ^# s( t8 o5 e& nRewriteCond %{REQUEST_URI} ^/cgi-bin/3 g# `* o, w. i) I# [
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
) k* {, z$ A3 t5 I- hRewriteCond ${vhost:%1} ^(/.*)$: a. B" z0 o2 @3 e
RewriteRule ^/(.*)$ %1/cgi-bin/$1
6 ]- o5 I  M% s+ [$ S9 b1 S, H6 P: L+ m- A& X9 b1 W7 M
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
/ N: g* u. \7 H& n) k3 Bwww.abc.com /vhostusr/www.abc.com
$ D( X' S" G* V/ y* _0 q2 iwww.xyz.com /vhostuser/www.xyz.com0 R; M/ {& Z- Z' }
www.cccbbbb.net /vhostuser/www.ccbbbb.net0 w8 R* z- `9 A# W' @! O: `" R
.. \. i# F$ [+ F& E# j- S
.- u% p% {- Q& x
.
. c/ y' T7 s+ x.
6 ]# Q4 k  T5 x9 ]  H& @; j(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)4 z8 X9 f( X& n8 }
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
  \0 H. ]$ b$ Y: j其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
4 F: H3 C7 T" s. Y5 ~7 f+ @注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~  V5 v5 Q1 o, g9 G+ s+ h1 P- l
==============================================0 t+ |5 s1 b7 \$ s; r
方法二、
  u0 X( R) J! A8 q/ Q1 ?3 Y! ?  G0 I0 Z2 B: M: T3 S( T& Q

0 L- y7 N) T6 ~2 ]rewriteengine on
* d. ~( X$ }) E4 a' hrewritecond %{HTTP_HOST} [^.]+\.域名\.com$+ V* s; ]1 Y$ B; z- d2 j) @
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
. c; Q/ q) @- I$ p9 O/ Zrewriterule ([^.]+)\.域名\.com(.*) /$1$2) I2 s, Y5 k& G+ ~
其他配置文件& N: w% R) z8 W4 }& W: H
1 Z6 a# I9 K7 V# `: T% o7 Z
接着在DNS中开设一个泛解析到对应的IP地址。& |2 X- E; R/ ]2 x: H1 c
就可以实现下面的方案。
; p. K0 ]2 Z2 o" R
* f9 ?9 S$ u- w$ ~7 Z! C域名:domain.com2 Q! }3 a6 m6 Z, t
绝对路径:/home/domain.com/
* ]6 ~$ m7 F, x5 M3 owww.domain.com 自动解析到 /home/domain.com/www/
$ A" H8 y0 n: s! Vabc.domain.com 自动解析到 /home/domain.com/abc/
  \$ j% y! k+ i: l等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
' @1 Y2 J5 I: ^" R; h* Q直接建立子域名名称的文件夹即可使用。不需重启apache。

返回列表
【捌玖网络】已经运行: