获得本站免费赞助空间请点这里
返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:+ Y: ^5 |3 D% k+ Y" y

; e! z5 B/ w) sRewriteEngine on
1 }; N# u, d$ Y' gRewriteMap lowercase int:tolower
; q- b  N  \' g' CRewriteMap vhost txt:/usr/local/etc/apache/vhost.map6 t% }% }  w& J; y
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$1 x+ g* V# ?0 {5 k4 M6 ^% R
RewriteCond ${vhost:%1} ^(/.*)$
' @! {, B+ ~0 Y% u5 k" eRewriteRule ^/(.*)$ %1/$1
* [" [" i; K2 L/ |! E
- x$ Z& l# a" F0 Q- t
: B4 c4 h  a( R. C其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
5 p3 p% p( K3 x8 e6 d然后,在这个所在路径的目录下创建一个文件: vhost.map8 w% Q9 p0 \$ ^* O8 {  K
内容为:" C7 @3 O' c" y) {2 o) p4 c4 n( v
- F) w  w* [1 P. C# j
www.domain.com /usr/local/www/data-dist/domain- H9 C& t8 U5 M3 v, j$ w$ N
bbs.domain.com /usr/local/www/data-dist/bbs
; z& k& c: _( _7 A* r& q+ S: lanyname.domain.com /usr/local/www/data-dist/anyname1 ^+ Z8 U! {, V

+ k" ?# x! ^9 f# s0 d以上部分都是:” 域名+空格+绝对路径” 的形式。7 Q+ W1 T, ?! Z- R- I
8 \# A- F; ?4 d5 i# D" v
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:. T: l: Z: j$ i6 c
domain , bbs , anyname 等等,理论上可以无限。2 q5 h9 u) `" h- v

8 I$ G  K5 [. P+ e) w0 Z, |这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以. M* P- w2 M  Z: U4 b
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。& S1 H, I- w( E' D/ o/ `# ~
6 A, A! e, W$ F- A; b% A% ?3 C
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。- i; i8 l6 G; k. k2 \
第二步:打配置文件尾部加上- u$ ^9 G/ i3 R" I5 ^
RewriteEngine on; L( [" x( n- W6 F
RewriteMap lowercase int:tolower
( _, c  y( L/ p' {; h3 U#定义映像文件+ b4 a* t0 j% i# K/ v0 j* f
RewriteMap vhost txt:/apache/vhost/vhost.map
3 o2 S( _# v5 r; d" R  v" b#处理变名: M8 u8 R4 W8 z5 C
RewriteCond %{REQUEST_URI} !^/icons/
1 T% R. N. Z8 V: O  ?& ]$ eRewriteCond %{REQUEST_URI} !^/cgi-bin/
8 x7 @; T1 g/ M1 E( URewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
& ^+ Z' v2 C1 F$ q这里做基于文件的重新映射# Y1 K, a6 e5 X# F
RewriteCond ${vhost:%1} ^(/.*)$
6 k' B2 B' r4 {RewriteRule ^/(.*)$ %1/$14 `3 W* J+ I* W. X* B2 s+ f0 `
RewriteCond %{REQUEST_URI} ^/cgi-bin/
1 j2 E+ I7 G0 E6 x/ j* W" r: dRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
3 z5 F0 u% P1 c' R0 Q: x: URewriteCond ${vhost:%1} ^(/.*)$1 r6 Y. w0 l9 D* w0 h# k
RewriteRule ^/(.*)$ %1/cgi-bin/$1
- `$ d3 k& c& h3 m' @0 {3 m2 G
( c7 c- O/ ]  `# w% {) N* e注意:vhost.map文件是域名和空间映像的文件,格式如下: 
7 e8 B- d' B3 v" @www.abc.com /vhostusr/www.abc.com
9 }. @9 h2 e) `. D+ q& k& k0 {. f. hwww.xyz.com /vhostuser/www.xyz.com
9 n8 g' B& b! u7 r( o7 pwww.cccbbbb.net /vhostuser/www.ccbbbb.net- W8 ^, W  F' J% c1 ?8 E
.
7 m: i) ]% R2 u/ M. q6 Q." |- I- k# M! x$ ]; R; x
.& ^& ]7 [* ]* k2 ]. Q$ k
.- M' ~7 z, b8 `, B: U- G
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
: Q/ n- R# @0 T7 z: L1 W第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~  H& z' t9 W5 M! s+ T. @* N! N
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
# I; f" F/ ^- N; X8 X0 g注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~# s6 K% I' X3 l2 N
==============================================7 e% d( h, C% g# o7 t1 y
方法二、
( b0 X, X- y8 _) R
& A: W& A  g, z( z' D8 w6 H5 h+ c6 o9 |2 G( t- S: j3 |* X
rewriteengine on1 S" y1 q; ]2 A- U: C
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
$ s! M4 n! ~. C! I2 ]8 B1 M; drewriterule ^(.+) %{HTTP_HOST}$1 [C]
$ W7 O: G' f1 `4 Q% m/ I! l0 N. O/ brewriterule ([^.]+)\.域名\.com(.*) /$1$2# I% l$ J4 f0 J2 o$ M: |
其他配置文件1 _0 E4 @8 ^' e$ l: k* c: X$ n: l
: @7 q: e/ S/ V; U& d8 z
接着在DNS中开设一个泛解析到对应的IP地址。2 c9 v1 a3 o- H6 H( q; v
就可以实现下面的方案。; x. i4 P* F. ]/ D1 J6 c

. _' Y) O, O: a4 y7 l) _域名:domain.com
( R6 }0 L0 a- G4 f绝对路径:/home/domain.com/
* M* I+ F0 }0 Nwww.domain.com 自动解析到 /home/domain.com/www/. L' X. F4 U9 ?; g0 ~) n9 X
abc.domain.com 自动解析到 /home/domain.com/abc/
' P7 c; v1 ]- F7 W5 Q) L等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹& ~% e7 r3 D  K9 S% N7 L3 M
直接建立子域名名称的文件夹即可使用。不需重启apache。

返回列表
【捌玖网络】已经运行: