Board logo

标题: 独立主机Apache 配置二级域名 [打印本页]

作者: admin    时间: 2009-4-26 19:44     标题: 独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:* ~7 b) c$ j0 ?' u! n- x

- T9 \7 R* |# p/ B8 v! W! Y: `2 j* }RewriteEngine on
& G0 S$ T5 s9 a; C' uRewriteMap lowercase int:tolower
( X2 ]; @- {: k- G0 [* N4 W4 LRewriteMap vhost txt:/usr/local/etc/apache/vhost.map
0 d5 L4 T1 s" R0 G- ?6 ~RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$( x+ y% }/ b9 q) S) h1 O
RewriteCond ${vhost:%1} ^(/.*)$
3 W0 p! Y. J- y% sRewriteRule ^/(.*)$ %1/$1
: m  {9 c$ L: B  i% h) g; Q+ P( g2 d( r6 Z3 m

# S1 t2 Y; p6 u6 |) |. o1 X其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
8 G2 z# u0 T5 I然后,在这个所在路径的目录下创建一个文件: vhost.map
' l% {& L3 r; `- a% L内容为:6 D* T& G4 {9 f' z# }9 ~$ F1 o

6 w# f8 u9 n7 |0 A& C4 ~www.domain.com /usr/local/www/data-dist/domain
3 c, |3 V: g+ d* qbbs.domain.com /usr/local/www/data-dist/bbs
1 x% D+ _& A& E% }0 D/ {2 Ianyname.domain.com /usr/local/www/data-dist/anyname  Q! a& s% b/ @' _

$ V* g& Z6 t$ W) I以上部分都是:” 域名+空格+绝对路径” 的形式。& c+ a/ @4 t+ o, w, \& v+ D

' k( a9 V# U" B2 b6 i* x最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
6 @! B" D3 \" M( \domain , bbs , anyname 等等,理论上可以无限。4 y7 _% t) T, e6 B
. T2 N7 T" ^* T# T( t+ X  l* m
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以0 Z# a8 J. Q1 f6 h
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
. d% R5 |; v3 G( N# a
. l3 g' P3 w% q) G# _第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
4 {5 y. z; w) d; d/ ?第二步:打配置文件尾部加上- H! Y& \$ b" {2 T  B
RewriteEngine on
& H$ N: v" i# Q$ N+ `1 u. }0 uRewriteMap lowercase int:tolower' R0 R. k. `  W: p5 N8 d5 ~9 r
#定义映像文件6 L* a: D0 _$ m7 ^# ^9 Q
RewriteMap vhost txt:/apache/vhost/vhost.map
: s- N6 c6 l$ C- q( w#处理变名
% m- l/ q5 K2 Z8 R" lRewriteCond %{REQUEST_URI} !^/icons/
* P) d# o& i* }RewriteCond %{REQUEST_URI} !^/cgi-bin/) E; d( d- o/ w$ t% Q5 }9 s5 m
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$1 Y% N  `0 z( x, u. q: ^9 y
这里做基于文件的重新映射
9 b  [: r% r2 ^- d- Y/ FRewriteCond ${vhost:%1} ^(/.*)$( w0 R" [. ~. _7 H) {) b
RewriteRule ^/(.*)$ %1/$1
: i2 a4 j" b6 gRewriteCond %{REQUEST_URI} ^/cgi-bin/0 Y' u! t' A; x
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$9 u, @. \  h! S" U
RewriteCond ${vhost:%1} ^(/.*)$! n: x7 E, f1 D/ C
RewriteRule ^/(.*)$ %1/cgi-bin/$16 V( R+ H# e8 v4 q/ |

1 ]9 Q7 }& X. m0 i7 Y  A注意:vhost.map文件是域名和空间映像的文件,格式如下: 
3 i0 g- s7 s3 Y! s0 m: Lwww.abc.com /vhostusr/www.abc.com
& }6 f* @; W+ O4 i: C: Rwww.xyz.com /vhostuser/www.xyz.com/ A" q- }0 O5 i. G
www.cccbbbb.net /vhostuser/www.ccbbbb.net
, ~0 W1 L& |$ a+ ?- y' S7 \+ k$ v* Y.4 [8 ?$ u1 u* i3 d( j6 c
.3 H: J' V. r9 T; h! F2 s( P
.
  X# |# x& N4 K! H2 ]0 t.
: y  ~4 t5 ~: B/ P) @(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
: X- b0 V" T5 C, ]' B  [2 l第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
8 z6 Y& q7 K0 ~) J9 Q) S7 s其实这个可以用php脚本来完成的,很简单的~~呵呵~~~; S3 J% ^9 ?2 u. l: |: Z
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~. n9 T" o9 ^  v6 f5 B5 j
==============================================
- Q$ {. o. E/ c, s) l: k9 V方法二、- {' V% V8 }2 z" y, R0 t6 J2 V/ w

, u1 c' X- c  f& U
0 s; n) j  U) i. i3 b+ orewriteengine on  y6 N; m. b( ]2 X
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$- r; R% ]9 x! V3 H  e$ c3 c
rewriterule ^(.+) %{HTTP_HOST}$1 [C]8 T8 U# E4 I5 r9 j& S9 |: }. c1 ~
rewriterule ([^.]+)\.域名\.com(.*) /$1$2+ l, Z* ]' y  \: G4 H/ H
其他配置文件
$ g/ I. H4 r9 c/ @! ]7 B; I% a  g" {' I
接着在DNS中开设一个泛解析到对应的IP地址。) w; ~+ ~* x) l- r) l
就可以实现下面的方案。
6 X  Z# I8 c% w
2 Y% l8 b+ a. u3 `7 ?/ B5 {域名:domain.com0 K8 g9 Y4 D! p$ @) s
绝对路径:/home/domain.com/* Y: q* k) U9 G$ v
www.domain.com 自动解析到 /home/domain.com/www/
1 X  p7 N. Y7 Y( @: }abc.domain.com 自动解析到 /home/domain.com/abc/0 t( G4 U  O- ?7 O: @: t
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
$ [) O; I/ C7 r. k' F5 `- M直接建立子域名名称的文件夹即可使用。不需重启apache。




欢迎光临 捌玖网络工作室 (http://89w.org/) Powered by Discuz! 7.2