|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14323
- 金币
- 2447
- 威望
- 1647
- 贡献
- 1395
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:3 T' q8 s! G7 Y, y! V
# v( S- u, X# b" |RewriteEngine on
: N' H! M7 n# s4 Q% xRewriteMap lowercase int:tolower& |9 s$ v0 x/ C$ f- h9 s
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
4 W m. s5 O) BRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$$ B& j) C+ i6 ~! k& _, J; u5 {. d
RewriteCond ${vhost:%1} ^(/.*)$4 t& \( |7 f/ b+ Q' d( y1 s
RewriteRule ^/(.*)$ %1/$16 C( M! I" L; I
, _2 S* c! }# S$ _* P9 ]3 H. ~3 P1 e K/ z" u0 ~0 u" E
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
( S+ G& |* r( @7 K3 q | G然后,在这个所在路径的目录下创建一个文件: vhost.map! p& c b( G% O
内容为:# D! J7 W# o" U* W8 t3 K
* d% u2 S7 |) ^$ \0 ~( Kwww.domain.com /usr/local/www/data-dist/domain
/ \4 |% E$ y! r4 z) q2 O9 \bbs.domain.com /usr/local/www/data-dist/bbs6 M) |% T8 }- | B" k
anyname.domain.com /usr/local/www/data-dist/anyname
; H3 K; X6 P% \( T6 X7 U5 \/ t$ l' P5 m/ z
以上部分都是:” 域名+空格+绝对路径” 的形式。& q7 p# \. [2 v* G, ~
5 |$ U- R I" b; `( l J2 y# M& F最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:2 z- R+ |$ C4 M4 p/ U9 E
domain , bbs , anyname 等等,理论上可以无限。
& h) D# @2 c3 M" s2 |0 B5 E
( v" d r4 G R z* T5 |4 T这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以9 R* O L7 r$ m% c: \: u1 L& C
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。" P5 R$ ^& d- a& ]; T# I
6 L# t' \" G& A) L4 {4 t第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。1 h1 R6 y0 S; n9 ?" ~
第二步:打配置文件尾部加上+ @6 L! R( Y6 j
RewriteEngine on) i# l4 z3 |/ u' b6 d* ^* N1 n
RewriteMap lowercase int:tolower
. H1 \6 U: {2 [2 o+ \# i, s#定义映像文件; D! R! @5 ~ s/ w4 L
RewriteMap vhost txt:/apache/vhost/vhost.map
! G7 K. d- I8 i+ B( a( q* C#处理变名
. ?0 }3 e: B' t+ {& h1 _RewriteCond %{REQUEST_URI} !^/icons/8 c8 s+ m& V4 r4 W7 M; v
RewriteCond %{REQUEST_URI} !^/cgi-bin/
0 `. {# g" i& aRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$; |4 C+ X! r- Q' ~8 x j* o
这里做基于文件的重新映射" a$ ?6 ]* l8 y% g- L
RewriteCond ${vhost:%1} ^(/.*)$
/ d, [' F% T5 b$ IRewriteRule ^/(.*)$ %1/$1! `7 q+ s6 x8 S8 p: D
RewriteCond %{REQUEST_URI} ^/cgi-bin/
9 ?5 d0 n; U' X% A. ]& @RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$, e; [% g9 h: Y; p* p
RewriteCond ${vhost:%1} ^(/.*)$8 g7 D% O( X( O) T
RewriteRule ^/(.*)$ %1/cgi-bin/$1) L3 G" H2 Y# n4 ?/ }
/ D; E" A i ~3 z3 J3 ?: E/ c
注意:vhost.map文件是域名和空间映像的文件,格式如下: " {5 ]- O5 p6 T- |, N0 \
www.abc.com /vhostusr/www.abc.com& _5 A/ U/ i9 q# p' ?% Z& |
www.xyz.com /vhostuser/www.xyz.com- r$ r! \1 G9 ?& A+ D6 e
www.cccbbbb.net /vhostuser/www.ccbbbb.net
; F X' g/ J; X" z7 {/ m0 h. j3 F2 h.( g) b; q! a* z; A8 A
.
% ]% o D' @0 X.5 q- v1 E+ w8 p; `3 p
.# s8 B- L: L; ~7 U# U& E
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
A# `! [+ O5 d! J第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~9 S' D9 c: k% R
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
9 n) ~; G% T2 D3 G0 r注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
1 p! l; E( k# \, E# {* U==============================================
! M' S; T4 A; |6 _' }: Y/ {方法二、; e, S0 e4 r* X# b1 _* v7 A
4 h6 j/ \# U9 `$ w7 @4 B
' I5 W( s1 j' trewriteengine on7 e4 Y- J/ [& n1 E; g2 ]- C: ?
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$2 j8 A R) f0 t6 I; |
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
3 s5 x; A9 S. l* Y5 `% b5 Rrewriterule ([^.]+)\.域名\.com(.*) /$1$2
6 N0 ]- n# L W其他配置文件
% [% O8 t: A9 l; _( W/ w
8 c( Z; K) c. l接着在DNS中开设一个泛解析到对应的IP地址。2 P7 ]* r+ ]0 l% c* A
就可以实现下面的方案。' L6 \2 \, T, _. Q
+ P3 B9 b" C4 _8 d7 V域名:domain.com1 u) F5 t+ ]3 L$ D6 C- M
绝对路径:/home/domain.com/5 c7 P: c6 u! I# Q& S8 r
www.domain.com 自动解析到 /home/domain.com/www/+ o5 I7 l! N$ F+ a# b
abc.domain.com 自动解析到 /home/domain.com/abc/) h% m$ ^2 V6 O0 d8 Y
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
, H* v. t: j& h+ ?; C直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|