|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14321
- 金币
- 2446
- 威望
- 1647
- 贡献
- 1394
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:/ H' R* t7 f! ~( F$ G% j
9 f# |2 S4 g5 c4 zRewriteEngine on
7 N' g: `& }# l- A: y/ v1 `RewriteMap lowercase int:tolower
/ w1 i! Q4 q C' |: K. ]RewriteMap vhost txt:/usr/local/etc/apache/vhost.map2 A! l" l4 a6 C8 x3 N! y5 i
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
& O0 a# N8 Q$ s$ a# L' B1 qRewriteCond ${vhost:%1} ^(/.*)$
# l: R% m ?7 _. ERewriteRule ^/(.*)$ %1/$1
7 ?. { M1 C. y d$ o, }6 Y, J8 D Y J, s4 c
5 a4 J7 {: ^6 J其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。* y, o2 e! l/ Y# P& C% e# G% W2 [/ U
然后,在这个所在路径的目录下创建一个文件: vhost.map
% v6 G8 y+ a5 d% E1 w" W) W; [内容为:
/ Z& U$ A/ {8 @$ P' |, F9 G6 M1 s+ ^* ^9 F& {9 \ U0 s3 C9 Q* K" |
www.domain.com /usr/local/www/data-dist/domain8 ]1 D9 @ R a& M) s* W
bbs.domain.com /usr/local/www/data-dist/bbs( B9 S4 [/ p# \) H3 [* @
anyname.domain.com /usr/local/www/data-dist/anyname
7 ~! f! F3 \4 @0 g9 O, H3 x7 ^- y+ D% l- T( d8 w
以上部分都是:” 域名+空格+绝对路径” 的形式。/ n, B5 M" c2 O* L" l
% G, H2 ~6 N, g" V7 Z! M* z. l最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
' D4 ?; W# r$ p# C, P& n# Tdomain , bbs , anyname 等等,理论上可以无限。6 W' G4 O. m. j! x) k
( y* B1 W2 C0 G* b/ ]- _* s- o8 T9 G
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
5 R8 f) t3 j3 S2 h$ Q0 x- X随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。+ j5 D$ z( O4 @7 S
! M7 a1 Q" M' g
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
% S% n6 \5 u! x, J* z第二步:打配置文件尾部加上0 |( U" N5 ]9 o z) u9 L
RewriteEngine on
) T) M- \8 w" L1 m) VRewriteMap lowercase int:tolower9 g6 I' ` @2 E! I, _: e
#定义映像文件* ]8 p6 n1 f& Z5 h: ]; b
RewriteMap vhost txt:/apache/vhost/vhost.map$ y! [, X1 b8 k
#处理变名+ r7 X% u# E; u
RewriteCond %{REQUEST_URI} !^/icons/
6 c/ E$ v' B+ U$ f0 X8 ?+ t. i. cRewriteCond %{REQUEST_URI} !^/cgi-bin/( y( w) _0 [: Q7 c
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
4 A% S! \. P& ?0 W3 ~这里做基于文件的重新映射) v/ q6 B/ C# _ {, E1 E! [1 y) i- k
RewriteCond ${vhost:%1} ^(/.*)$
1 }" f( o1 r9 p) lRewriteRule ^/(.*)$ %1/$11 ~ z4 F- z. k: S. l% L
RewriteCond %{REQUEST_URI} ^/cgi-bin/! [5 Y! f6 e7 ]
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$$ `. s: X0 m8 g0 c% R' n4 p
RewriteCond ${vhost:%1} ^(/.*)$
4 F# K" Z$ H/ |RewriteRule ^/(.*)$ %1/cgi-bin/$13 }1 Q0 P* K4 q- Z
# a3 v+ L! T; }' @6 d+ B) j. l
注意:vhost.map文件是域名和空间映像的文件,格式如下: ' a" S- v% s6 j- r' G) x
www.abc.com /vhostusr/www.abc.com# S4 r" M& h* H/ L
www.xyz.com /vhostuser/www.xyz.com
) z6 ^: g, M( p) `" R0 a9 ewww.cccbbbb.net /vhostuser/www.ccbbbb.net
. p% @3 K3 b7 f. v& |% d.6 d! `1 T' `& T! R3 j+ F
.6 F% e8 r7 U: U. g8 U+ x5 v
." b) _2 U: U# n) A' k
.' P2 d% z- i. |" e( E- v- ^- m+ Y
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)" M8 h1 s$ L- `: b
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
# Y; t; h5 e' J' f6 L: R! m其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
: N' N9 _/ o; D: M注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~+ D0 G# o& x6 G+ I) H6 p) ?
============================================== W2 h) ~! X/ ~" W
方法二、5 U' p& P c: F; v, D ^" n# ?% y
4 L3 L3 o" d4 W. Z! U$ J. g7 U2 `; z/ l: G4 E3 _
rewriteengine on
& f3 x1 R f. G k8 T$ }! D) Grewritecond %{HTTP_HOST} [^.]+\.域名\.com$( n$ P* [) u$ t! e9 { R) z
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
; N2 p; t2 c3 ?1 k" mrewriterule ([^.]+)\.域名\.com(.*) /$1$2
/ S+ T) e" X4 N" L9 f其他配置文件+ }4 c1 x- Y5 l% |
6 P! K5 f: Y2 m, j接着在DNS中开设一个泛解析到对应的IP地址。, v/ X' r- z# ~) |+ P& O/ S
就可以实现下面的方案。, |6 S0 H2 U* B1 G6 Y6 J
1 r7 H4 r: v! G域名:domain.com
6 q. D, V, J& M+ G' n/ W, X绝对路径:/home/domain.com/
. i5 ^! {! i! a+ i+ ]. Vwww.domain.com 自动解析到 /home/domain.com/www/
; g% p/ k3 o! m3 U. P e1 |abc.domain.com 自动解析到 /home/domain.com/abc/2 y# s& T# w8 r$ B# m) i$ L9 W0 a
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹3 s7 T3 ^2 j6 U7 e
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|