  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14191
- 金币
- 2386
- 威望
- 1647
- 贡献
- 1334
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:- t5 |1 \! P+ v
* E! Y) O$ V$ w1 t, a* E
RewriteEngine on
* P% J3 W$ l& S9 LRewriteMap lowercase int:tolower
' L* |, ]- b+ [2 e: y; h4 ^( D; nRewriteMap vhost txt:/usr/local/etc/apache/vhost.map' }/ \+ o* }; \# c$ B g% S9 y! w
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$9 A: c4 \% E+ w/ a% r' }, X8 k9 L$ `
RewriteCond ${vhost:%1} ^(/.*)$: C1 v( V D8 E. V
RewriteRule ^/(.*)$ %1/$1
8 F" ^% ]; ^; Y; h' x8 x9 ]4 _* W' D. } Y& _. S% S# I) ?
& Q% d2 J' @% T3 I' \其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。$ r" w' B# Y& W
然后,在这个所在路径的目录下创建一个文件: vhost.map$ D2 b7 N8 W5 C- P5 C& H
内容为:3 e, W3 F B4 Y, A- o, s7 A
% N( ^. w! N( Z! K; _9 g% r
www.domain.com /usr/local/www/data-dist/domain4 t4 c4 @6 A2 s1 I/ w
bbs.domain.com /usr/local/www/data-dist/bbs
" w" C6 Y6 T* g0 A }8 ianyname.domain.com /usr/local/www/data-dist/anyname2 Z2 z8 t! P7 ?6 x I
7 d4 ^ I0 ?3 q, j7 v. M. F
以上部分都是:” 域名+空格+绝对路径” 的形式。
) U U; x" I. `# y' ]# \
% w( J( @! f; L最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:. z$ \2 p# b3 ]! W6 W9 A, O* O
domain , bbs , anyname 等等,理论上可以无限。9 u9 I! S' K1 B0 U$ I L
& ?% ^) u g0 T: }3 L
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
6 w# l2 J: ~2 M* [/ }随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
; d& K; [5 f8 O+ e5 I- I. b G6 k
! ], ~3 N+ p( g: |. `第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
" A5 x4 z: r0 S! P6 ?第二步:打配置文件尾部加上
" I" r& N' E0 GRewriteEngine on+ O4 L9 Z) W7 x0 O4 g C. x# K% F) X
RewriteMap lowercase int:tolower
- `( E. n- K& Y7 o, T#定义映像文件
' [- U K* m0 A/ H* P4 S) y% ~; oRewriteMap vhost txt:/apache/vhost/vhost.map+ r! [/ N2 I7 H1 e; c3 j" Q
#处理变名( K0 Y/ S# k7 ]. y3 S! j
RewriteCond %{REQUEST_URI} !^/icons/
7 O' j9 ^* T" V3 v; sRewriteCond %{REQUEST_URI} !^/cgi-bin/- `. Q: B9 W o, [1 R3 C
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
- s' o! S4 ~4 ?5 e& J( A. w这里做基于文件的重新映射1 n/ {# ~- r& u" q* v
RewriteCond ${vhost:%1} ^(/.*)$9 C: Z$ d' I* Z5 ?7 h; @
RewriteRule ^/(.*)$ %1/$17 R& |* u/ F" K6 f: c* v! J
RewriteCond %{REQUEST_URI} ^/cgi-bin/
0 D: Y6 n4 e. m1 FRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
% p2 S- W' S' ]& ^RewriteCond ${vhost:%1} ^(/.*)$, O7 |4 A4 T v1 X& U5 X
RewriteRule ^/(.*)$ %1/cgi-bin/$1
# n8 ~* ?$ g0 g K, e6 }$ f& }# z: \5 u# d; J) `3 y3 [6 p
注意:vhost.map文件是域名和空间映像的文件,格式如下:
# M! E2 J# }$ F( G# Ewww.abc.com /vhostusr/www.abc.com' A7 v$ q7 L' h& J1 x
www.xyz.com /vhostuser/www.xyz.com
1 J% T( f( r9 i) a0 e$ Bwww.cccbbbb.net /vhostuser/www.ccbbbb.net
; o& P+ x6 I" m6 X" c.# ~5 F5 y; r) C$ k! Y5 @
.
, f3 Q8 J' K& P.5 m. N+ C4 ]( D
.* g2 q# l4 ~3 j' @2 I3 U( f
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟). @5 m' x6 g# F' i5 i
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
8 Y9 b9 B* ~3 m8 ~7 a' f1 D其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
1 J1 A8 c+ b2 C8 i注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
- U# Q* S( w7 d==============================================+ ?4 M1 T8 j, J
方法二、
! a' I2 Y( v! O/ x" G
. K+ U" u: B& j; ^6 E! e& l1 @/ ~7 _# v) ]+ X. H
rewriteengine on
6 Y8 w, l) p+ W* m0 m0 ?( srewritecond %{HTTP_HOST} [^.]+\.域名\.com$
5 v! Z, s7 I( H* x/ ?% z* P- {. Qrewriterule ^(.+) %{HTTP_HOST}$1 [C]2 k! }8 U8 q# z' H+ t+ @. H
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
- l s3 h+ X! V. U其他配置文件$ k# a. u+ }( B0 u6 g! `
7 n) o+ b& i6 ]- K0 v1 R5 z接着在DNS中开设一个泛解析到对应的IP地址。! B: a3 Y7 d E3 r& a3 K' c: r
就可以实现下面的方案。! t) N; z8 ^+ a& h
$ O. J# T+ r, l7 U( |% Z域名:domain.com
# J6 B( S) I$ c2 N绝对路径:/home/domain.com/ Z Z C+ T$ X% s9 G4 v
www.domain.com 自动解析到 /home/domain.com/www/
" D# }- s- M {. {6 cabc.domain.com 自动解析到 /home/domain.com/abc/
" O+ O) E$ T2 v; E ^等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹% J, m* _+ i$ f2 n
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|