|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14441
- 金币
- 2506
- 威望
- 1647
- 贡献
- 1454
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:" F6 T8 G. X1 W9 z
: r( p$ _+ P8 tRewriteEngine on
$ r) p0 O4 U9 ]* S1 J: U7 FRewriteMap lowercase int:tolower4 d2 W0 J. U7 H9 B5 y: d
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
1 C( k o# C# T/ J1 FRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$! t# W: J9 y2 B5 S1 a. j9 T: G
RewriteCond ${vhost:%1} ^(/.*)$
9 c5 }9 T" W& }. L& S+ jRewriteRule ^/(.*)$ %1/$1
1 ~# a4 ~1 U1 G% ?* X% J$ X0 M. s: y, C
* }# V5 D* O: N, [6 S# N
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
5 }8 K% x# S' O; ~; ]然后,在这个所在路径的目录下创建一个文件: vhost.map8 O5 U0 O# x: u9 m$ y P* g8 w/ E
内容为:1 h# W; ~) d8 J/ o' n1 g( B
" B& S0 O- H- w7 j1 j5 w/ s i
www.domain.com /usr/local/www/data-dist/domain
( g N, p8 A# A' pbbs.domain.com /usr/local/www/data-dist/bbs; T6 t, q, I9 A# z/ u
anyname.domain.com /usr/local/www/data-dist/anyname
) D* D. |$ v) v8 v. q) ?1 O) e; l$ _0 w# p5 s) H5 F
以上部分都是:” 域名+空格+绝对路径” 的形式。2 a6 b- H, H% c/ h \
8 L, s/ d' P; q
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:7 ^ q7 J' C# W$ G" E& u0 K! P
domain , bbs , anyname 等等,理论上可以无限。
5 h7 c) L! p0 l; z5 P, d2 _! |6 S2 @/ u
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以' \4 y7 T; U0 }( p: V
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。5 Z1 D, r; \ a* _
% M) H# _" l/ I! M
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。5 j0 T" U' h% B3 w
第二步:打配置文件尾部加上
$ D j0 f5 E* Z! o; Z( u! D qRewriteEngine on8 O, S' ?/ w% _: v U
RewriteMap lowercase int:tolower P' P6 b$ l) I) w3 s
#定义映像文件
4 H+ K9 _& g2 a- Z: R) i9 kRewriteMap vhost txt:/apache/vhost/vhost.map" K. ?$ I9 V( a/ K- \9 s# x; C
#处理变名& x! g* `# O# N6 ]
RewriteCond %{REQUEST_URI} !^/icons/
7 q2 b+ P9 H( K4 e) yRewriteCond %{REQUEST_URI} !^/cgi-bin/
$ W4 ]7 a0 K- _7 E' gRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$3 e* {% X$ a1 _# j, ~
这里做基于文件的重新映射
5 D7 @( g J8 e. }" u* TRewriteCond ${vhost:%1} ^(/.*)$
* X$ I) c0 z; w) R$ O. l8 M5 @( nRewriteRule ^/(.*)$ %1/$1' i& l1 w1 r' _: k* s! K: ?
RewriteCond %{REQUEST_URI} ^/cgi-bin/
N* x8 ~. b/ Y! c3 V3 L6 qRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$9 _% f/ \1 M' }: D& x: [
RewriteCond ${vhost:%1} ^(/.*)$( J, [3 k8 b! W5 `5 f# H3 {3 e
RewriteRule ^/(.*)$ %1/cgi-bin/$1
) F! o8 t: L6 d5 O* a
" r) w# o* f' C$ Q注意:vhost.map文件是域名和空间映像的文件,格式如下: / U A, u' D+ o4 n
www.abc.com /vhostusr/www.abc.com
, \3 b! T, {% ?; p" |$ Iwww.xyz.com /vhostuser/www.xyz.com
. V- n* M$ F* E& wwww.cccbbbb.net /vhostuser/www.ccbbbb.net
/ V# [( ^4 d+ ?2 v( \! s5 G.
* B$ b+ U9 V, C+ h.3 o3 n6 |" Y" j2 ` T
.
: [! ?# K( c9 c0 N4 O.
8 B! ?% b0 E# H: k& u+ t* K(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
& o. q" H h8 K5 u第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~ |1 c' ]% [% u7 g j2 x
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~% v) L3 c' {- T: j
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
- e- S8 Q0 i% ~) j, _9 l==============================================
. }: r( A) l7 z, b, y方法二、) }9 n! H0 G; r& ` V
2 H T+ d! L6 h: v9 x K
' x6 i5 U2 ]( a0 @5 C' Srewriteengine on
& U1 K4 {' d3 l% z$ ]rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
+ c" Y& J. x. x$ F6 X* T1 arewriterule ^(.+) %{HTTP_HOST}$1 [C]
5 n$ @* W& \; u6 Z. W9 F5 h1 K8 Yrewriterule ([^.]+)\.域名\.com(.*) /$1$2
5 a+ W3 B& j- r) M8 Z. z1 [其他配置文件% s$ j; V/ J1 _, w$ n
* \9 o4 O& J6 Y6 F
接着在DNS中开设一个泛解析到对应的IP地址。
0 n3 ~; C, x) j/ \9 E$ H7 M" R就可以实现下面的方案。2 d) i7 K7 ]% A+ [ X
3 u7 q8 _: e1 x# b& m域名:domain.com
) | v. @' j# ~! p( i L1 @/ x3 o( K绝对路径:/home/domain.com/. m4 \, u- F2 K; ^) o( t
www.domain.com 自动解析到 /home/domain.com/www/
1 p" x% o1 _( m: G2 i5 b4 Tabc.domain.com 自动解析到 /home/domain.com/abc/
5 r2 J! t; ]: v: B; ]7 ]3 h等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
8 e9 a8 x% d+ v! n直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|