  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14197
- 金币
- 2389
- 威望
- 1647
- 贡献
- 1337
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:- `6 ]+ s9 g3 Q0 c3 o! o
. o E: i1 d n# S# I4 gRewriteEngine on
& I0 B4 d' h9 p% O. ?RewriteMap lowercase int:tolower# [* a5 g5 X3 B: N! O H$ f
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
+ W. I$ j; {' l& Z: z: _/ b/ e; uRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
3 g& e" M3 }. G% C4 ~RewriteCond ${vhost:%1} ^(/.*)$
& m6 E4 i" L9 w) vRewriteRule ^/(.*)$ %1/$1" Z* {' x1 H8 v3 C6 y/ h6 z
8 }8 [$ H* J( w% [% s) d& b
/ j0 b% [# W+ H V0 O& M8 m其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。/ c& ^% }: ` G- t3 y5 `5 A
然后,在这个所在路径的目录下创建一个文件: vhost.map4 h$ { o" a% q9 e# @
内容为:* g2 ]- u+ z3 r
6 N1 Y1 U h- v+ o+ \www.domain.com /usr/local/www/data-dist/domain
5 o8 z8 S% \, Z$ }" Zbbs.domain.com /usr/local/www/data-dist/bbs- B- s9 D4 D' M4 h+ z% L) ~
anyname.domain.com /usr/local/www/data-dist/anyname
' F7 V7 Q5 P4 T$ @& v( m8 I. ^5 e# q& C$ y3 f' ]
以上部分都是:” 域名+空格+绝对路径” 的形式。
2 X6 j* \4 U- ^: e# H4 Q+ i4 y5 T" s, P4 B( j) ~7 V
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:; R) T' ~% a$ ]
domain , bbs , anyname 等等,理论上可以无限。7 _9 n# E: b4 i+ A* E2 b
* Y# i2 ?. x* a5 B2 Z; m! L2 ?
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
* ?8 e) W2 ~7 ^0 t- S1 t+ K3 Z随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
2 \7 N9 ~# Q" L
% e) i: D- x8 u( s第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
! R5 \7 s5 r) s: z第二步:打配置文件尾部加上* R3 Y, p! K" m; T& I; x8 A
RewriteEngine on0 W, C8 T7 h, H0 {# ]. q/ u
RewriteMap lowercase int:tolower- F( x8 _6 ~# y7 G7 Y& D
#定义映像文件/ P {6 c, W/ \
RewriteMap vhost txt:/apache/vhost/vhost.map
& f8 d. S3 A% k& e. i, o#处理变名/ b" Z* e) R0 a
RewriteCond %{REQUEST_URI} !^/icons/1 ~* P9 b! K) w, X$ l) t: r
RewriteCond %{REQUEST_URI} !^/cgi-bin/
; C& J4 V. G; y; fRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
. D$ Z8 M1 Z9 l' d1 U: g0 k这里做基于文件的重新映射
6 b/ l. o8 ]- J6 mRewriteCond ${vhost:%1} ^(/.*)$
/ }' a1 Q+ H) ?! f3 D: n4 FRewriteRule ^/(.*)$ %1/$1/ C+ Z% J( I! G- N: D8 E2 w
RewriteCond %{REQUEST_URI} ^/cgi-bin/8 Q1 `# s# p0 L; \+ Y# p
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$* S8 o* z8 l9 O: b& R' f3 T: {
RewriteCond ${vhost:%1} ^(/.*)$
. {$ D3 W4 w6 V. W* [) x4 W* }5 PRewriteRule ^/(.*)$ %1/cgi-bin/$1
# I }7 `, p3 Z: P4 Q1 Z# D9 q+ w/ {( b5 B0 L5 s$ O* G6 [( [
注意:vhost.map文件是域名和空间映像的文件,格式如下:
S" Z& n7 m. M' wwww.abc.com /vhostusr/www.abc.com0 j1 m) S. y% r9 O# y
www.xyz.com /vhostuser/www.xyz.com
, A0 G3 A1 w) v) pwww.cccbbbb.net /vhostuser/www.ccbbbb.net
q# }( ^; x0 w# j' x.
: t5 l" g7 q, x& m" X.
+ P: M9 V5 a/ M3 Y) Z: J, q* {# R.
$ m) {8 ]2 K# Y." Z9 O7 ?# s( t* \9 {
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)" p$ d* {; a9 o7 j
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
2 X6 [! ?+ b7 s# A+ G0 K1 x其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
K7 z- v; f2 J: j1 e0 L注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~5 j" J; ]3 a6 W3 m9 i
==============================================
) f3 O- k- N) F方法二、& e4 c3 U5 M$ w: ?8 f |( e2 A
3 D8 a5 w5 ^5 e+ H6 Y3 D# ~/ E2 ]2 ^
rewriteengine on
/ }* [9 b V) Orewritecond %{HTTP_HOST} [^.]+\.域名\.com$
) B% e* J; `5 w: F. Zrewriterule ^(.+) %{HTTP_HOST}$1 [C]* l' |5 z0 U3 M; W
rewriterule ([^.]+)\.域名\.com(.*) /$1$2' w! A4 X* j: c9 m* w& ~7 d) v
其他配置文件) @' |" m! Q3 n, _+ u5 B5 P
# |9 a# e. D( U+ A0 n1 w* o v
接着在DNS中开设一个泛解析到对应的IP地址。7 Q8 ]: \% A2 H+ W" X0 k8 Z$ t: P
就可以实现下面的方案。
# N$ g9 B! E9 L! t" D4 w9 T5 k0 _* a$ q" a
域名:domain.com% @1 B& d0 A! p b4 \
绝对路径:/home/domain.com/
i- V8 h5 h9 }7 B2 i- Twww.domain.com 自动解析到 /home/domain.com/www/
, {8 ]( K) ^ r* G0 ]+ Wabc.domain.com 自动解析到 /home/domain.com/abc/* A) _( s {2 D. O9 K! F
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
+ C6 ~# r# h u直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|