  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14247
- 金币
- 2414
- 威望
- 1647
- 贡献
- 1362
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容: V0 c4 n2 c J* G' m
: i' ]! k; |1 k) o# g" j+ i
RewriteEngine on
1 f4 F( k& U( L% l, U1 r, jRewriteMap lowercase int:tolower) I9 @! L' {! t( h- u4 [( w% y9 [
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
/ t4 _; _) l" v8 q7 GRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$' x: e4 C! K) g6 L
RewriteCond ${vhost:%1} ^(/.*)$
: t1 |" y2 x) w# |/ d# SRewriteRule ^/(.*)$ %1/$1
+ _7 n% {) A T! S7 g
" o% D& H2 }" b$ K& m& z* n `' P3 u
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
* b( U- u$ [$ `0 O$ \然后,在这个所在路径的目录下创建一个文件: vhost.map, I: D! W( f4 ^1 H V# ~: X
内容为:! w9 ]8 L. [2 R, G) m
i9 w/ D( G; F) m" n* u' ]
www.domain.com /usr/local/www/data-dist/domain
+ W$ a4 Q+ J7 D4 J( \6 {1 [! c& mbbs.domain.com /usr/local/www/data-dist/bbs2 x( G" m9 c2 G L4 ?4 w6 A/ F
anyname.domain.com /usr/local/www/data-dist/anyname
, y K: n2 W5 B4 P9 M+ I0 o( {8 ]$ c5 D ^, J7 v4 m9 T. i" t9 G
以上部分都是:” 域名+空格+绝对路径” 的形式。. x# X' K# u, v1 x: W
8 c6 ?2 j0 ~# A/ I2 n5 t _最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
8 u9 x X* t/ F$ k6 \& P1 fdomain , bbs , anyname 等等,理论上可以无限。# z- J" f) q! L: M6 l$ b' P4 m
, T* a0 T1 K U
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
/ r7 `/ D- w e随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
3 @* f+ y. Y: V
3 U# C1 Y8 u- C5 A& ]! p7 G第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。: R7 ^* K9 z+ K' _/ k
第二步:打配置文件尾部加上/ \& W4 w, T* W
RewriteEngine on4 `: C7 u' \) P# ?6 R
RewriteMap lowercase int:tolower! |: Q) h# |8 O3 c _
#定义映像文件
9 q: O. o' ^4 gRewriteMap vhost txt:/apache/vhost/vhost.map1 k1 d' s; q% R+ `/ {7 }. o' ^, M& r) |
#处理变名% z) e# D7 M/ q
RewriteCond %{REQUEST_URI} !^/icons/
* `/ q) t# R& h: f5 QRewriteCond %{REQUEST_URI} !^/cgi-bin/$ h% u8 J& {' E! f+ G" k
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$! ]% j, R, |5 b' H
这里做基于文件的重新映射
# E) Q& f, M( T3 U' L: NRewriteCond ${vhost:%1} ^(/.*)$
" o$ F9 z' R" ?# w2 H h+ KRewriteRule ^/(.*)$ %1/$10 l0 v) @- ?: h2 s
RewriteCond %{REQUEST_URI} ^/cgi-bin/+ e4 W: S7 F( g* k
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$& @! h. A# {" r K, V; k& `# H
RewriteCond ${vhost:%1} ^(/.*)$- f1 ?' z- H/ w9 t
RewriteRule ^/(.*)$ %1/cgi-bin/$1
8 o D* C7 T j3 Z5 a5 ~# {' X: w" J, \6 P# |5 s; H2 F5 M6 v1 b9 {
注意:vhost.map文件是域名和空间映像的文件,格式如下:
9 b+ T$ J& R/ ]" }6 v' F: r4 zwww.abc.com /vhostusr/www.abc.com
; n& b/ {6 a& {) R+ A5 Fwww.xyz.com /vhostuser/www.xyz.com
* K3 U$ @# z1 F# \$ Z# Hwww.cccbbbb.net /vhostuser/www.ccbbbb.net7 u; G4 [; L# X* f
.1 t5 Q9 R: C, a/ v2 Q
.$ }' Y" z! n( L1 w7 s y; t
.* f+ A' k8 |* N0 G2 n% G( M, y
.
; M2 Y! z/ l. V8 O. d(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)6 B& ~/ W' _; J
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
) m& t. V' r. _) {其实这个可以用php脚本来完成的,很简单的~~呵呵~~~+ s% m2 R! @* j
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
6 [2 M* E. M" c' z* O==============================================2 T( W1 P7 V, N" U
方法二、
, T4 D l; H+ E2 g+ x
: c. L7 T. ^. {% q
A; k+ a& M5 ?& erewriteengine on* [! M7 L, l" ?$ [5 E
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
3 j( u: `0 i3 s( zrewriterule ^(.+) %{HTTP_HOST}$1 [C]
6 Y1 P' O2 s, Z5 y L& Jrewriterule ([^.]+)\.域名\.com(.*) /$1$2, V/ r: ^0 C$ \
其他配置文件
( D$ ^- N" k; [) F4 `
3 _0 e& ~0 O& i接着在DNS中开设一个泛解析到对应的IP地址。
1 ~) W& I9 b7 ?# \+ s5 R就可以实现下面的方案。+ L S4 `8 q+ k9 h7 v5 n
' Q2 t b& A' `/ c% h域名:domain.com# |* c2 v) P% t. S
绝对路径:/home/domain.com/. U; ^! R) I1 o7 Y' g }1 X$ [8 B% g
www.domain.com 自动解析到 /home/domain.com/www/
& ^4 q( o4 D6 Babc.domain.com 自动解析到 /home/domain.com/abc/
$ D7 l$ [3 J1 [& K, Z# {4 N- j等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹9 N6 a8 j0 u) y: {3 p! d( a B9 L
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|