返回列表 发帖

独立主机Apache 配置二级域名

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:! u2 h* B4 P, N/ r* A" r5 w9 x; _
9 N& b; u; D% P# P
RewriteEngine on
# R! y5 C' U# }. ?& m3 |RewriteMap lowercase int:tolower
8 |$ }$ g: i5 x9 HRewriteMap vhost txt:/usr/local/etc/apache/vhost.map8 h+ s) g8 A9 ?0 }  L4 j# j
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
# z  O6 R9 X# n, `1 @, ERewriteCond ${vhost:%1} ^(/.*)$
% O* p/ J* N/ w* |RewriteRule ^/(.*)$ %1/$1
' a8 u$ M! `/ G% y/ _7 V; v$ I
  s% q! R; _' F" y1 g
* w9 @# K" T( D) O; e/ D4 B$ J其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
7 `) Q% L0 ~! z# f) P3 ~0 F然后,在这个所在路径的目录下创建一个文件: vhost.map3 @& b$ I- ^2 w# W
内容为:
8 t, J* e3 a# }1 Z+ \( m* w4 ~: C% V- N+ e
www.domain.com /usr/local/www/data-dist/domain
8 g2 |5 w6 d3 b: vbbs.domain.com /usr/local/www/data-dist/bbs& X( ]1 I0 M# n
anyname.domain.com /usr/local/www/data-dist/anyname* B& s& S- [& a) N% D

7 i( P/ U0 X- q以上部分都是:” 域名+空格+绝对路径” 的形式。
) Q  n" f1 H7 p) @+ Y+ A7 S. |( _. u' @9 y" G2 Q2 a
最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
5 V1 g+ u5 ?( e8 \+ [domain , bbs , anyname 等等,理论上可以无限。
" ^7 D0 E" y+ H
7 j' u! z! I$ e6 O. T. M4 ^这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以# N0 @$ s3 d( q3 a
随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。& w" e+ T* e6 ^9 J$ y" g# I: k

4 ?: G% I2 {0 u; X( o' `9 k第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。# [; ^2 B: X6 m& [* [8 k
第二步:打配置文件尾部加上6 u' _# K, F  J! b# B! G
RewriteEngine on% U: D, L5 d2 }8 W; j
RewriteMap lowercase int:tolower7 W3 ~. C6 `: _2 P* x
#定义映像文件
* `1 \" F* m. @1 F6 M: y( e: ^RewriteMap vhost txt:/apache/vhost/vhost.map$ K0 F" V/ ^7 v3 I8 _$ {+ a
#处理变名
  ^+ Q4 R6 k! d$ g- s9 M# B2 wRewriteCond %{REQUEST_URI} !^/icons/3 h1 o3 |7 a+ s9 ~' b
RewriteCond %{REQUEST_URI} !^/cgi-bin/
7 R' G7 I) R- J+ DRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
5 `' |- F# R1 \这里做基于文件的重新映射& |( a; Z. [2 l+ C1 G0 n0 |
RewriteCond ${vhost:%1} ^(/.*)$* T, Z" X1 }' S, b2 i
RewriteRule ^/(.*)$ %1/$1
. \% S: q7 a, w3 M& m7 {RewriteCond %{REQUEST_URI} ^/cgi-bin/1 `+ S7 j) U7 }. R: Z3 U! E
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$  G7 }  a  H9 m9 L
RewriteCond ${vhost:%1} ^(/.*)$
, B5 u. y' L( C1 d3 b) oRewriteRule ^/(.*)$ %1/cgi-bin/$1
- c4 ]6 x6 n2 A* P# V$ Q+ X. j5 t9 j4 h: z% D& f
注意:vhost.map文件是域名和空间映像的文件,格式如下: & s2 ?$ S, o3 s( Y; h& r; W- L- l
www.abc.com /vhostusr/www.abc.com5 P1 I* E; |$ Y& N
www.xyz.com /vhostuser/www.xyz.com
  O  W+ j4 o" z" K% t) R6 C( pwww.cccbbbb.net /vhostuser/www.ccbbbb.net
+ b# N2 t9 _6 ~' v  H0 w.% q( t) `. F7 B0 i
.% j, w* ~2 C2 O/ _& S4 P5 `
.
$ M6 x, p% d( B8 ~/ H2 Y4 W.
& D* f5 U6 M/ m(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)3 ?9 {# q# |2 u: g
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~2 }4 }8 {; M1 x+ j
其实这个可以用php脚本来完成的,很简单的~~呵呵~~~
1 g) m0 F1 ]8 C2 I. G, J) |注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
! o* \* t9 W- q8 b5 _==============================================5 m6 V  t+ r7 b% r; F( L9 {) L
方法二、
/ ^. @4 B6 a( ]. j: o8 C
, h; I/ F* G1 I" k1 u- k: ~
( e' f2 @  T6 U  j8 S% Zrewriteengine on
0 V% r* p. r$ O$ xrewritecond %{HTTP_HOST} [^.]+\.域名\.com$
* g, H! x3 t  ]. x6 o: grewriterule ^(.+) %{HTTP_HOST}$1 [C]  n$ w6 H5 E' N' |$ B* q- P2 r. c9 P
rewriterule ([^.]+)\.域名\.com(.*) /$1$2: G: K8 t4 I7 N8 p' N
其他配置文件
" p1 C& z# ]& C8 Y* o3 v9 }# ^  M" k' `& C( c4 j9 X  l# g( Z
接着在DNS中开设一个泛解析到对应的IP地址。6 `5 A9 |; q9 T7 _2 s: `
就可以实现下面的方案。
" t* w& g4 t9 K/ S+ c4 @5 @# j5 I* \
域名:domain.com/ g' }6 C0 V# e- [& t
绝对路径:/home/domain.com/; E+ v. w; ~0 p7 R+ R# z- ?1 F
www.domain.com 自动解析到 /home/domain.com/www/
# E5 L$ o" Z- Q; T; Eabc.domain.com 自动解析到 /home/domain.com/abc/- W4 S8 C5 W4 J' w5 k) k
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
; _8 b# g' n7 D: r( |  W直接建立子域名名称的文件夹即可使用。不需重启apache。

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