  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14171
- 金币
- 2376
- 威望
- 1647
- 贡献
- 1324
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:# x, O% B' r2 `1 w
% T' Q9 I! @, z9 K% f y3 h
RewriteEngine on/ l0 C( D1 J w' s) ]3 }
RewriteMap lowercase int:tolower
- M8 t1 l0 Y' D& m) U/ r- ORewriteMap vhost txt:/usr/local/etc/apache/vhost.map/ \. }' h9 Z' T. n; s3 I
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$& Y* S" G* Y. r: K; M: `
RewriteCond ${vhost:%1} ^(/.*)$
9 ]: a% Y* R; P! }RewriteRule ^/(.*)$ %1/$15 \, g' q1 I' K4 d* D9 `
* F0 l, _; w" p" r
8 C2 _0 a/ Y( a; @6 X+ F. w" n- x9 H2 j
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。# Q. l2 t( J4 P: \- z
然后,在这个所在路径的目录下创建一个文件: vhost.map
/ |* u+ X8 k: M# Q内容为:
, \) p0 T; `+ N4 N) `$ g3 t8 v" l. m6 [0 f( L7 m. w) k
www.domain.com /usr/local/www/data-dist/domain3 {7 Y3 ~. t% \. |: w B
bbs.domain.com /usr/local/www/data-dist/bbs# s' m2 o/ q- B v, A' K
anyname.domain.com /usr/local/www/data-dist/anyname
y: J% {9 M6 n9 Z6 ?# I, L# f, y
; R: e2 _" X) K0 x. x! v以上部分都是:” 域名+空格+绝对路径” 的形式。! \- H* d6 @; [5 j
: M B# _4 z# [2 Q3 a/ m- G最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
) _) _$ ~5 Y4 S- ~ vdomain , bbs , anyname 等等,理论上可以无限。9 R& u, ~ r* Y) Y
9 e" m0 u9 D$ b! H w0 | c9 Q
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
* L, G% n+ t. r5 a6 U l随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
3 `& p% B5 v1 H5 ?
0 u8 U2 s7 s$ e6 ~- O0 O第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。( ^/ I7 R$ p) q, ~& ~: v8 x
第二步:打配置文件尾部加上
$ }% g) g' {2 y& H3 aRewriteEngine on& h$ R, J5 |! ?; k3 x2 C) w0 S
RewriteMap lowercase int:tolower
3 V$ f' ?6 }: _# |! Y- d#定义映像文件
% d2 Q" p# H$ o3 j1 _8 P, vRewriteMap vhost txt:/apache/vhost/vhost.map8 U: ~7 ]6 B) h K5 @
#处理变名+ C& K5 f& @+ |4 h. A7 d. B
RewriteCond %{REQUEST_URI} !^/icons/
0 R1 `: o9 @5 C% j; ?- ^/ P4 ~RewriteCond %{REQUEST_URI} !^/cgi-bin/' s, ]; g0 g/ o, K
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$ A5 ~+ w/ ?7 G$ M1 n1 _) t( \
这里做基于文件的重新映射
" d" m( @4 f) ?RewriteCond ${vhost:%1} ^(/.*)$
) F, n2 f9 s- @" o, `5 VRewriteRule ^/(.*)$ %1/$1
; Z; V$ \1 ~8 JRewriteCond %{REQUEST_URI} ^/cgi-bin/
+ S- {6 ]% f" z ]RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
" `$ }. w4 C6 Q" s% }RewriteCond ${vhost:%1} ^(/.*)$
, Q# |' r. u# {! QRewriteRule ^/(.*)$ %1/cgi-bin/$1# U8 _& ], w/ m$ K: E. d4 ]
6 S5 T+ r$ b: t- B+ I
注意:vhost.map文件是域名和空间映像的文件,格式如下:
+ B" a. b2 c+ {+ Pwww.abc.com /vhostusr/www.abc.com8 K% d9 |( X3 |2 E
www.xyz.com /vhostuser/www.xyz.com
- \$ g& h3 d: @0 l& Wwww.cccbbbb.net /vhostuser/www.ccbbbb.net
% K! }2 C/ T. s; n% q4 y9 k.9 ?, E+ F" {, R. R: w
.
; c! L3 J7 k% {, X& ?.2 p: m- ?2 v. y' s8 u
.* ]+ K" `5 v9 v$ b' f
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)- t0 L4 v U% x! ^9 z2 x( I. s& g
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~( {8 f0 z; _# z7 {' q4 N6 I( ~
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~! K( v0 v2 C0 H! o; B/ C- X9 J
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~( _& m5 k, J+ G
==============================================, l' t) Y) ]; c+ L2 y
方法二、
, S( K z4 y O& H8 j& s4 G' o9 y. F# F; P
( k W. k5 R, S8 D0 X: e: B
rewriteengine on1 L2 j7 r, I q
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
" D3 X6 i& ~4 L! grewriterule ^(.+) %{HTTP_HOST}$1 [C]
7 R, c4 t$ x0 srewriterule ([^.]+)\.域名\.com(.*) /$1$2, V. S3 ]5 B# n2 M; K" ~
其他配置文件1 a: U/ H0 ]4 s
`6 X2 Z2 g$ [! I {! K7 J9 W接着在DNS中开设一个泛解析到对应的IP地址。+ j4 _. H& p' S' ]
就可以实现下面的方案。$ @, D0 h E* g
# L w7 q3 d& A$ |; i+ P1 F. l域名:domain.com+ M( L1 j! m. i( z! S% {
绝对路径:/home/domain.com// Y# v9 g- @4 K5 P$ @7 a% ^
www.domain.com 自动解析到 /home/domain.com/www/0 O' b# w6 |* H5 [
abc.domain.com 自动解析到 /home/domain.com/abc/
" D* X |7 d5 [8 i. z( C, d等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹' l4 ~# f3 V- u
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|