|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14389
- 金币
- 2480
- 威望
- 1647
- 贡献
- 1428
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:
4 N# J4 ~5 I/ R1 A2 ^
0 ?: ]- C- S7 @( x5 b6 i% I V2 jRewriteEngine on% A G1 C3 s2 K/ _: C0 V4 y/ C
RewriteMap lowercase int:tolower b9 @, v. ~. k- M+ Q! v
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map' o! F# X* e& r7 `
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
; T* p% z: @# CRewriteCond ${vhost:%1} ^(/.*)$ [5 {3 _, V1 R
RewriteRule ^/(.*)$ %1/$1
) H5 L8 b+ a, F& G
# `2 E8 s- ]2 ]3 f1 [# q4 |$ [
" G7 N. b" r. B1 v2 o z! v @' V Q/ f其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
; w& M9 q+ k q% w! W然后,在这个所在路径的目录下创建一个文件: vhost.map; O" R: d& r* i Z- h& B6 r
内容为:7 N: H( }5 N. T# D! B# z( N
. i* W, D1 K* N+ g4 y/ _: F+ [: bwww.domain.com /usr/local/www/data-dist/domain6 i X, p0 x: y3 o6 v. g9 J
bbs.domain.com /usr/local/www/data-dist/bbs
0 Q8 m3 V& b i' S) zanyname.domain.com /usr/local/www/data-dist/anyname
. T8 }3 O: b. e. L9 G* l5 t; S; F, b2 U1 ^
以上部分都是:” 域名+空格+绝对路径” 的形式。
* e3 j4 b* a, J6 Y( j! m+ t
A7 ]4 |" Q3 B- a* E- S0 {' Y最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
/ A l7 V* ]6 c4 \2 F3 |; Zdomain , bbs , anyname 等等,理论上可以无限。
' t* o" T: x3 M: p9 _" e# h4 c7 i+ S" S
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
9 {! A( q1 P5 ?" H7 A# S4 e9 j随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。! v( F4 _1 i/ v5 i# X' z
2 U) _) G m; j/ J* T
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。4 D% G" R8 O; I/ i. l; X0 C
第二步:打配置文件尾部加上
- b# A$ R8 i: j1 m4 f$ KRewriteEngine on+ S; H( n X: |! \% p! f% \8 g$ {& Z
RewriteMap lowercase int:tolower- S/ e: v8 U9 S# ?1 ~- U7 _3 {
#定义映像文件
* z# i: p8 J& N5 ~" @RewriteMap vhost txt:/apache/vhost/vhost.map
5 w i+ W J$ q( _: H$ F#处理变名 D. f: z2 j' O5 R, W
RewriteCond %{REQUEST_URI} !^/icons/
( c' A8 H- F' i& ~RewriteCond %{REQUEST_URI} !^/cgi-bin/; T$ \/ N0 u# u+ b; a
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$9 r) d* E: B. Q
这里做基于文件的重新映射% u1 X1 y9 B7 a- e- [
RewriteCond ${vhost:%1} ^(/.*)$" K ]5 k/ W$ X6 n5 N
RewriteRule ^/(.*)$ %1/$1
8 X* ^. z& y/ O& z- ~RewriteCond %{REQUEST_URI} ^/cgi-bin/
" b+ j; n0 F4 u$ sRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$+ h" h: D8 R1 b, V# H8 t. Q5 c$ G
RewriteCond ${vhost:%1} ^(/.*)$$ |2 P# p" z' b6 {8 n: X# |
RewriteRule ^/(.*)$ %1/cgi-bin/$1- Q( \+ @% Z3 T4 j6 W
- F1 y2 ~6 N" T1 a& Z9 A% s/ C5 A# ]注意:vhost.map文件是域名和空间映像的文件,格式如下:
% V D8 J3 g4 E) ^! f- m" dwww.abc.com /vhostusr/www.abc.com
8 V5 ?- E! F/ c! o% D4 L4 Cwww.xyz.com /vhostuser/www.xyz.com# H$ A$ [5 j$ \* y! N1 ]
www.cccbbbb.net /vhostuser/www.ccbbbb.net
$ h( O: J& [( H2 J.
/ m& `; M) y3 j4 |" j. a+ R8 K.
( Z6 ^$ h6 ~, S6 m# l+ {.6 ]" H1 L# C/ a2 n9 k% _
., b" n5 Q8 V( r* N& F% a' V6 O
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
+ Y9 B- I, `, v! m! X9 A第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
" y8 ]+ S3 a$ | e) W$ E3 K0 f2 ?其实这个可以用php脚本来完成的,很简单的~~呵呵~~~7 }$ R& g; l5 \1 X/ m, V5 {
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
5 ~, v% V6 t$ `==============================================1 ^' B. C0 f& p9 b
方法二、5 G7 X7 e* j2 L$ i, ?+ t) t# r
/ G& O3 Q& Q$ J" Z1 Q" Z% L' K2 l6 |
rewriteengine on
! w; q" \1 U; arewritecond %{HTTP_HOST} [^.]+\.域名\.com$# W7 c! L& I2 o6 G) a0 E
rewriterule ^(.+) %{HTTP_HOST}$1 [C]$ j7 p) x- m- I
rewriterule ([^.]+)\.域名\.com(.*) /$1$2
9 b0 D5 t- [9 q' O/ E2 u4 J* }其他配置文件
+ u! P4 T7 } N+ Q( L
- n2 r' G8 b4 H1 o5 F( m- c接着在DNS中开设一个泛解析到对应的IP地址。% e9 H( `3 c( }, E" S4 X/ F5 L
就可以实现下面的方案。8 ?! @ Y, z& u# q% _* @
* h- u8 U9 V; k& h' s! t域名:domain.com
8 \! {9 U# n& P) w) k6 l绝对路径:/home/domain.com/
1 ^ ?. G# {# s$ Jwww.domain.com 自动解析到 /home/domain.com/www/
0 ^( `$ O7 E C* x) k; ~: ?! gabc.domain.com 自动解析到 /home/domain.com/abc/
$ c7 h5 |; y& w0 R# n8 |8 J等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
0 y$ |$ Q# v* Z( V3 W/ ]0 s/ @直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|