返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
& n- g2 w7 A" K* B  D6 P/ e$ Q/ Q+ `: ~. p, M
RewriteEngine on* \8 f( d0 S, K0 Y# ?' R" s  [
RewriteMap lowercase int:tolower
& x; J1 h1 ?" Z  ~( GRewriteMap vhost txt:/usr/local/etc/apache/vhost.map$ N7 B$ S( q* C0 P0 M
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
" A2 @3 b7 w: CRewriteCond ${vhost:%1} ^(/.*)$& X5 }$ p" y& S8 D# r
RewriteRule ^/(.*)$ %1/$10 v; E' g5 s- v1 e% h: r1 A0 Y( v
% U: M' ^) c1 c7 l( h

% Z2 `' j" a5 N  n" p其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。; g( Y" J& a  s4 u2 r5 u
然后,在这个所在路径的目录下创建一个文件: vhost.map5 a' y  @; S, H$ J+ Q
内容为:
% D& H' o  N% J4 c8 j4 I: \
' d/ |- H0 b2 t. f2 e1 Iwww.domain.com /usr/local/www/data-dist/domain
9 v: B( v' ^7 u; t8 lbbs.domain.com /usr/local/www/data-dist/bbs
( {2 y) U) h% V, i# s) Q( J! `& Ganyname.domain.com /usr/local/www/data-dist/anyname
4 W$ A  d+ w' W  B
# Q) Z: h+ P! G& s. G0 @以上部分都是:” 域名+空格+绝对路径” 的形式。( Z: p- J( L2 p3 o

) w- S. ]! W, V最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
3 g! U- \; ^7 i+ D; a3 S5 W. [domain , bbs , anyname 等等,理论上可以无限。
7 T4 H! w( N' D3 h, h$ X  d" q5 W4 N# q) k
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以2 a. ~+ Q) Y7 N" p
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。  |, j6 l0 ], y' `) Z; Q+ B
& q7 I* b, q& ?8 b* I( f
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。; F, N! q" u: P1 @8 N2 i$ h+ I
第二步:打配置文件尾部加上$ h. r7 D7 c8 m) I
RewriteEngine on. t2 S% S* f. l
RewriteMap lowercase int:tolower
" Q) M6 G/ w: N' Y#定义映像文件
9 y; ], A+ ]# \9 V9 qRewriteMap vhost txt:/apache/vhost/vhost.map% S. X# T( V2 Q! P' y
#处理变名3 D$ m( {' }" S, ^3 v
RewriteCond %{REQUEST_URI} !^/icons/( n' |  e3 q# }: ^& @
RewriteCond %{REQUEST_URI} !^/cgi-bin/, W( o1 ?' u. r7 L8 T
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
! ^* S2 `" {$ k9 \6 T这里做基于文件的重新映射
' @( o5 l+ Y8 M; B7 q) t5 LRewriteCond ${vhost:%1} ^(/.*)$
! X2 v& e1 [0 l( {7 |9 w; hRewriteRule ^/(.*)$ %1/$1
  W, Y# p( x$ w! T: L, H3 F2 g2 wRewriteCond %{REQUEST_URI} ^/cgi-bin/
0 T1 f9 N% W0 Q) {" f* pRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
; L+ j& T1 H2 [/ KRewriteCond ${vhost:%1} ^(/.*)$6 R. c  O( d2 |4 }. g
RewriteRule ^/(.*)$ %1/cgi-bin/$10 w" B& m( q, [4 k. l8 m8 S* y* M

# S0 c4 P0 u6 T2 G1 L  S' K注意:vhost.map文件是域名和空间映像的文件,格式如下: 
9 C6 w1 J" c9 M6 p8 l8 vwww.abc.com /vhostusr/www.abc.com9 S: i# E0 ~% ?  Z' `- C
www.xyz.com /vhostuser/www.xyz.com2 f- \  q" j4 ~' A+ s5 s' V
www.cccbbbb.net /vhostuser/www.ccbbbb.net) J9 ]: x2 }( f$ \7 K2 h4 ^$ e
.9 }- H: B6 }# |, B+ x
.6 [! L2 z6 K0 Z* o9 u4 n
.- n; V! i: Q# n& _! J7 R
.5 ~0 W! {* H6 u* z* W
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)' z+ L7 T) @& L2 _% D
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
8 h9 z" p  t4 K9 Y4 N' F# S其实这个可以用php脚本来完成的,很简单的~~呵呵~~~# u6 F7 Z8 ?  b( N% w$ V
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
$ S. `& ?( [3 H5 H==============================================
8 h* O& U# L2 c7 {' j* m方法二、
# w7 u- D! P$ {# t! J4 _( q0 H0 Y. M8 b" d' U) H6 r% ^; X; o/ \

8 g  R+ E8 G1 O, k( e" D* W' R$ Erewriteengine on) y$ m, k& H& G7 T2 \. ~$ @9 v
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
$ J# P9 {0 v" G4 q% Irewriterule ^(.+) %{HTTP_HOST}$1 [C]
% u9 \: C; ^$ ~3 {2 y- yrewriterule ([^.]+)\.域名\.com(.*) /$1$2
. w: ~1 \, e* X7 u' p: A其他配置文件
3 ^: I5 n# O% H$ d/ l1 E9 w3 K+ @' E3 H, w1 H4 ~# u+ \# C* m
接着在DNS中开设一个泛解析到对应的IP地址。& R$ x1 g, T$ n1 ?* M& Y: w# Q  e) }
就可以实现下面的方案。
9 i# n. k6 l" I  n5 W5 L  l5 z5 R3 _, ^
域名:domain.com! `# Z! g* j: f+ O1 i; Y
绝对路径:/home/domain.com/2 \% V. [, l2 `  C2 Z
www.domain.com 自动解析到 /home/domain.com/www/
  @! Z* i# `5 t6 p. uabc.domain.com 自动解析到 /home/domain.com/abc/0 m4 f3 v! M* C& D/ L9 J" y
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
5 J  J8 _- v* N9 b& l& q直接建立子域名名称的文件夹即可使用。不需重启apache。

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