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

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:! W% }5 G; M( }; p+ Q; Y/ j- u

: m1 t8 Z0 Q2 F& @" Y" I& LRewriteEngine on& T% O7 b  M1 f2 {
RewriteMap lowercase int:tolower
9 |" |" I% o4 F# ERewriteMap vhost txt:/usr/local/etc/apache/vhost.map2 W' o! a. d' A, u9 {
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
. s6 D, B  P+ V6 hRewriteCond ${vhost:%1} ^(/.*)$
& B" Y2 ~! ]  E4 _2 JRewriteRule ^/(.*)$ %1/$1
( R* J$ ?3 c' ^1 q1 y7 C: {  c0 y) m; A3 @' I- i

; d3 d1 e& v7 A& N其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
; z* J5 \  Y  E; V, f; _然后,在这个所在路径的目录下创建一个文件: vhost.map! {, T% j/ V2 e/ g6 K! u& h
内容为:# N( \* v* v% n
. C5 r4 `* C$ ]" f
www.domain.com /usr/local/www/data-dist/domain
# Z3 M; U! a3 S$ V" ^bbs.domain.com /usr/local/www/data-dist/bbs
- K& Q% G/ ~$ c) Panyname.domain.com /usr/local/www/data-dist/anyname
1 s+ k7 c2 x% G6 T$ I% ?, G5 F8 ~( S
以上部分都是:” 域名+空格+绝对路径” 的形式。
+ f. l( D6 }1 l
! n" R, `. N/ r最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:2 U" e' k" ]% g
domain , bbs , anyname 等等,理论上可以无限。# c! q# B  b. a

. E" p" w$ i, r+ J# g这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
7 v, @* r4 ^$ u3 ^2 ~* a随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
, F3 S* e, V+ u4 @8 P9 w  i6 i8 i- W- E8 K% v/ q3 |- q' U2 R
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。5 O4 S6 j+ L  q, x- ]
第二步:打配置文件尾部加上
! f. G8 i1 k3 Y0 X; dRewriteEngine on
6 c3 p6 l* s8 D& \: @6 f: R- rRewriteMap lowercase int:tolower. h7 g5 Q$ ?! W4 h
#定义映像文件
! G) E5 R. L$ o5 E& ]RewriteMap vhost txt:/apache/vhost/vhost.map6 r5 A  d1 z" a) r$ B
#处理变名; O/ c1 ?+ l5 F' p9 M
RewriteCond %{REQUEST_URI} !^/icons/8 S1 m( S/ C* U) W' {6 O) A
RewriteCond %{REQUEST_URI} !^/cgi-bin/
. {& @+ n6 W% `8 eRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$5 `' b( M& o" I+ q5 d4 s5 }1 ^
这里做基于文件的重新映射
) L0 r3 I7 U* O" w6 Y4 b4 NRewriteCond ${vhost:%1} ^(/.*)$
5 w! c: ]1 |2 lRewriteRule ^/(.*)$ %1/$19 \) L) P7 h+ t( F
RewriteCond %{REQUEST_URI} ^/cgi-bin/8 B7 \; H! i$ }2 d; B. N! L1 `
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$+ G$ P0 j4 X2 s" a& [/ W6 A
RewriteCond ${vhost:%1} ^(/.*)$. J7 {( {% z( l, m! v+ J
RewriteRule ^/(.*)$ %1/cgi-bin/$1
$ G' U% Y3 R& b9 }- @) d5 u7 Q5 z7 h* c. v% ?) }! J
注意:vhost.map文件是域名和空间映像的文件,格式如下: 
1 n" q3 v) l! z! ^0 B/ bwww.abc.com /vhostusr/www.abc.com3 w7 L- K; j7 I! |/ j
www.xyz.com /vhostuser/www.xyz.com* _' V: H! ~9 J1 F9 b+ i
www.cccbbbb.net /vhostuser/www.ccbbbb.net7 o: c3 V: c8 D2 p* B
.4 E6 Y5 p$ s/ x: Z9 r! {5 Q
.
8 i" ^; ]' L! l/ {.8 p. B3 V4 h' _' h$ v
.# L% D$ k3 ^, I) P3 R. I, P/ l
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)& d# r! n1 ?/ J6 p" q0 a
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
+ |9 P! w& ?1 @" G7 v: H+ N5 C0 y其实这个可以用php脚本来完成的,很简单的~~呵呵~~~# t- f$ Y; g! b6 d5 |6 U5 {3 _# r
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
, g  y! R1 {0 g0 }$ G==============================================
# B& s' O/ I2 {# V2 l: d) H方法二、
) v5 z5 u' T" i
" y4 x, V8 H, z, \% B- |0 _/ g4 S9 O* E
rewriteengine on
. |5 G' J% \$ O. ~' s% ~. t* I0 F6 Jrewritecond %{HTTP_HOST} [^.]+\.域名\.com$2 [( \( D8 `. c) Z2 E8 h
rewriterule ^(.+) %{HTTP_HOST}$1 [C]
& ~1 ]. a: m- x) e+ p, Brewriterule ([^.]+)\.域名\.com(.*) /$1$22 I% H3 a: O* r- o! |! c
其他配置文件* W7 t2 Q( x0 E% V
0 J/ }$ i$ X$ Q+ |
接着在DNS中开设一个泛解析到对应的IP地址。  _0 z$ i* C0 ~$ d, b3 G
就可以实现下面的方案。
/ h  _) k) `. [' r
- c$ h5 t( j% X* V域名:domain.com
5 d$ X5 `& u5 [9 w* l绝对路径:/home/domain.com/0 Y+ c5 h8 \7 ^1 H) d$ T3 o
www.domain.com 自动解析到 /home/domain.com/www/
4 t' C9 d: F) u3 W5 @7 rabc.domain.com 自动解析到 /home/domain.com/abc/
' z/ ~8 t# B4 O等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹8 b8 j( [4 r9 ~1 L
直接建立子域名名称的文件夹即可使用。不需重启apache。

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