  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14221
- 金币
- 2401
- 威望
- 1647
- 贡献
- 1349
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:$ U& B* ^& u# V* n$ w- g7 Y
j- @) y8 Z$ X6 W3 ?! m0 v$ B
RewriteEngine on% Z4 y* V9 d2 B) @) F2 C; a4 u
RewriteMap lowercase int:tolower8 Y0 L$ o- B Z
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map+ I: G( y7 V+ X# I4 I- | T
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
' \( r8 R+ L" q s0 bRewriteCond ${vhost:%1} ^(/.*)$
+ F: H7 P; ? A+ ]1 l( l/ lRewriteRule ^/(.*)$ %1/$15 Z9 K* D/ R' W* j( T2 K
( H( ^% n; T; n* ~$ ^; g" Q
' H& J& R; l3 \1 }) ~+ }. f其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。7 ^) H, ]% E% q
然后,在这个所在路径的目录下创建一个文件: vhost.map' \# B/ b* E8 ]8 }" q; E1 @6 C+ C+ B
内容为:
* k) S' }8 j# o, F- T, r o1 w3 ?- R ?$ G7 f& F
www.domain.com /usr/local/www/data-dist/domain
/ P! f) }$ Q, w, q C6 s' k, Y* k; \bbs.domain.com /usr/local/www/data-dist/bbs. i; O5 t# i6 F+ c: i
anyname.domain.com /usr/local/www/data-dist/anyname( a- ?$ V. R6 X; ^5 J
# ~( M5 C/ u* `) [; P
以上部分都是:” 域名+空格+绝对路径” 的形式。
2 Q9 O6 \& p5 m* n. S* S* O+ }% M6 d
# }- V* X' ?6 d) T* F& h最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:0 r4 P9 f2 O( R0 J, a7 E3 F; R/ O/ E
domain , bbs , anyname 等等,理论上可以无限。
/ Q: O- M5 X7 G" o& r6 h3 d) q; T: m! X! L& R
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
3 Q" N( X! U, }随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。
# H: Z. [' H1 R' h3 {9 m: \" h; M6 A0 d; X& `
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。
" q% ~6 H4 }7 X* p$ l* X. K第二步:打配置文件尾部加上
' F1 }+ R* P, ?8 E0 c( D+ q. lRewriteEngine on! s3 ^' f7 `% m7 c! A; \
RewriteMap lowercase int:tolower# C! m* L3 A2 _' y
#定义映像文件" p* X, |& F/ W0 d1 `. d% ^) |- D
RewriteMap vhost txt:/apache/vhost/vhost.map7 e8 v$ D! j4 B8 @: B. `
#处理变名; ^' ^5 I1 M6 v
RewriteCond %{REQUEST_URI} !^/icons/$ K( Q( x7 P* U1 y& D2 ~4 P
RewriteCond %{REQUEST_URI} !^/cgi-bin/5 M( Z- }2 g$ V7 Y: ?
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$" M- X' O. A; T o) U
这里做基于文件的重新映射
" X- {2 L9 q5 F' Y* u# iRewriteCond ${vhost:%1} ^(/.*)$
" @" `8 f$ U* p8 W/ oRewriteRule ^/(.*)$ %1/$11 `3 N( q- Y4 j/ A
RewriteCond %{REQUEST_URI} ^/cgi-bin/
" h/ y1 T2 J' D- B# BRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
6 M+ s' Q! N& ? Y9 oRewriteCond ${vhost:%1} ^(/.*)$
6 D; U" R3 B: R, E: m& YRewriteRule ^/(.*)$ %1/cgi-bin/$1, c, r! e$ X& c6 y/ ~
7 l5 R. M( Y# v注意:vhost.map文件是域名和空间映像的文件,格式如下: 9 q2 e. \, \, N; Y
www.abc.com /vhostusr/www.abc.com& c4 i# }" f5 K
www.xyz.com /vhostuser/www.xyz.com
5 ^$ D; E5 I, O6 w/ H0 cwww.cccbbbb.net /vhostuser/www.ccbbbb.net/ o$ l# H5 S* X5 {! X9 R( }
.
$ x1 Z0 `( g9 o8 a2 W7 r.
4 }9 Q9 O% e8 M.
9 z( |' U4 e0 b# M0 }0 r8 W.5 a: J: w6 R3 i6 o+ v1 K, N) W
(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
9 C. _& f( F& o9 `5 X D第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~* \% d9 y9 M9 j5 X Q7 {
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~+ v7 L* L# s8 u/ {! D3 D
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~* J+ O3 g9 u' g* C' @- a
==============================================
3 y, q8 R8 C' z: t h- v方法二、& f0 q- a% K! {4 ?1 X; l; J
; B& ^( R$ [! L0 ^/ \% s; r( Y
# c: P# R3 |4 `) e) erewriteengine on
( e+ L4 b+ j% \9 O( trewritecond %{HTTP_HOST} [^.]+\.域名\.com$
$ d# [. m- X4 I y2 Hrewriterule ^(.+) %{HTTP_HOST}$1 [C]
# N3 R/ ~' s% e6 nrewriterule ([^.]+)\.域名\.com(.*) /$1$2* s! J! z1 T" ?" Z/ f- p! w
其他配置文件
8 M8 U. r8 w) G7 p9 G7 ^/ I& N5 S& @7 U0 O9 { n, _8 a8 p# M4 u
接着在DNS中开设一个泛解析到对应的IP地址。0 C) G7 P8 ~$ U0 ~% D
就可以实现下面的方案。
/ k$ @1 R1 o* x4 r
! m5 }) b- L- F! I1 }8 k域名:domain.com$ y S' P5 F: t8 n! W- ?0 g
绝对路径:/home/domain.com/ T0 q0 t2 U" Z& j& f
www.domain.com 自动解析到 /home/domain.com/www/
2 F K# |* v, i9 B( `) l1 n. f# Rabc.domain.com 自动解析到 /home/domain.com/abc/1 E% h& j0 u- d' o0 V4 W* R; ]
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹: i; G( g0 ?3 o1 _; [, C# d6 O
直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|