  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14189
- 金币
- 2385
- 威望
- 1647
- 贡献
- 1333
|
独立主机Apache 配置二级域名
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com其次,在 httpd.conf 中打开 mod_rewrite之后,在 httpd.conf 的最后,添加以下内容:0 W% i+ D: D' G9 W. K
/ O( j* V- r1 w- v: {RewriteEngine on9 y& {0 O- _6 J8 O0 C# m" n
RewriteMap lowercase int:tolower: ~9 L! M% w6 \5 z! _0 h
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
+ E' H$ u, M) w& ]7 Z3 V" pRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$- Q3 R* w; g3 k& t
RewriteCond ${vhost:%1} ^(/.*)$5 S" A" |2 N+ J2 Z: i0 U0 ^7 B7 M
RewriteRule ^/(.*)$ %1/$1) `2 P1 n7 D# |+ }: _& d
6 ], W& e2 F8 l# U6 d% B
, X& m2 v, _; b5 c$ l
其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。
1 f% t/ y6 Q5 t5 z然后,在这个所在路径的目录下创建一个文件: vhost.map
) b- a6 [5 e' A4 B3 ~+ q/ ]内容为:1 o1 q; l# ^- F+ P6 ^* `
9 z" M2 `+ M) j% a+ owww.domain.com /usr/local/www/data-dist/domain2 ?5 w' [ I% {- r& F: w, `
bbs.domain.com /usr/local/www/data-dist/bbs i& [. g+ e! C( D5 m! ?4 u
anyname.domain.com /usr/local/www/data-dist/anyname5 k' ]* N9 ]# C: F2 L0 [
9 C ~) f% o/ t+ _1 Z) ~( n W以上部分都是:” 域名+空格+绝对路径” 的形式。' c$ z$ g6 d& ?+ C
/ o0 O- y, R" e, X5 C% A0 S- U* Y最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:
* w: e+ g9 h2 P/ qdomain , bbs , anyname 等等,理论上可以无限。8 T1 J5 k) P, A m9 ?3 C+ ^% P: g- ~
7 G( Y; r2 X2 e! y' o; s) f4 `
这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以
+ ^- a9 E% }" W8 b+ [" g随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache。2 X- {8 \8 t: m
$ t& R# ]" H+ t, J) v: e2 e
第一步:打开apache的配置文件httpd.conf,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的#号。0 v0 c7 B) P! h: L, V9 H; B5 }
第二步:打配置文件尾部加上4 v8 A E" K, s
RewriteEngine on2 m4 y' {; g- o2 r" I
RewriteMap lowercase int:tolower# J- _+ k( G$ L4 o2 T% T
#定义映像文件
9 F7 q% U2 U' y( V3 D: \+ k6 mRewriteMap vhost txt:/apache/vhost/vhost.map
) O% K7 u7 K9 v! o: r. U#处理变名
7 m3 F: i$ }. ]6 [! qRewriteCond %{REQUEST_URI} !^/icons/
# u5 L( t# ?- [% m% D# W! \% JRewriteCond %{REQUEST_URI} !^/cgi-bin/ X& ~6 b0 a# P( b; j
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$4 F. ~9 @: Y1 Q" Z5 o
这里做基于文件的重新映射: A0 r4 P2 g7 f. [7 t
RewriteCond ${vhost:%1} ^(/.*)$& e: u u4 I3 C7 z/ x5 n
RewriteRule ^/(.*)$ %1/$1' H. {# O: s! Z ]
RewriteCond %{REQUEST_URI} ^/cgi-bin/
9 y2 E! c; h# z6 I' }; jRewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
, u; P5 ]- l( h" Y s/ \- f; P4 }RewriteCond ${vhost:%1} ^(/.*)$$ l- X% k# l! u& ~
RewriteRule ^/(.*)$ %1/cgi-bin/$1: G" Q0 y) \+ M E
& y- t. C: \6 J( \ J注意:vhost.map文件是域名和空间映像的文件,格式如下:
9 N' [& g% _, qwww.abc.com /vhostusr/www.abc.com3 i. a$ m# V9 \( P
www.xyz.com /vhostuser/www.xyz.com
7 y6 |3 e' S2 zwww.cccbbbb.net /vhostuser/www.ccbbbb.net
/ {( o$ w5 P9 F, G" j! @0 [" Z! Z, r& W.
3 R% \% e" N: J1 v+ n) {.
1 B# e2 ~7 P2 _5 e( ?.
0 `! X# C% b. C7 A6 u9 Q: e.
+ Z- P% P7 K4 E9 ^! `1 b: Z(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟)
% a/ k G; M6 f' U第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了~~~
7 V* ~! j. Y$ o3 E其实这个可以用php脚本来完成的,很简单的~~呵呵~~~) h3 Z1 f1 X$ h
注意啊:php_admin_value open_basedir “path,这个选项要配好啊~~新手如果不懂的,就不要动这个了~
& y; b+ }: k8 `* k1 V==============================================
& Z! Q R0 b/ c6 r/ m方法二、7 m! _* M0 O1 u- w' [
7 U. E7 ^/ f+ o% ?7 i+ r4 l; X$ I; i
2 A4 |4 h1 q9 N% {) O
rewriteengine on
& F' w. A# M9 S$ N: k! Brewritecond %{HTTP_HOST} [^.]+\.域名\.com$
5 R) {+ S$ U% }+ U. f* O: k1 Zrewriterule ^(.+) %{HTTP_HOST}$1 [C]
; [& k% M. C+ v4 d( frewriterule ([^.]+)\.域名\.com(.*) /$1$2
: c: n! b2 V: Z1 r5 H/ j, r其他配置文件
( N: T0 R6 F* K g4 D. `& k, [8 N* Z" W; J; N
接着在DNS中开设一个泛解析到对应的IP地址。
r. Q7 V; a- Z5 [& c就可以实现下面的方案。- M( b4 W" t& T# U3 J
; E- n& O6 t! h* h5 V3 N% M7 p域名:domain.com9 |: f9 {$ S w6 A1 C6 b
绝对路径:/home/domain.com/3 [9 T8 u2 y7 K5 {% b4 S" o5 ?
www.domain.com 自动解析到 /home/domain.com/www/6 m! ^2 j! k+ ~, K9 M F6 P4 {1 y/ b
abc.domain.com 自动解析到 /home/domain.com/abc/
- X3 T% `, `; ~% d; R/ r等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
% m+ C8 Y- X' w直接建立子域名名称的文件夹即可使用。不需重启apache。 |
|