Apache 域名跳转 配置
参考了下网上的方法始终没有成功 网上方法配置步骤如下:
首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com
其次,在 httpd.conf 中打开 mod_rewrite
之后,在 httpd.conf 的最后,添加以下内容:
RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1
原因主要出在“RewriteCond ${vhost:%1} ^(/.*)$” ,我的是windows的机子,而上成是针对Linux 的机子 所以改成“RewriteCond ${vhost:%1} ^(D:/www/.*)$”就OK了,我的站点放在
D:\www下 。
windows中的配置如下
RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(D:/www/.*)$
RewriteRule ^/(.*)$ %1/$1
下面是一些资料:
一、启用该功能的要求2.apache必须已经打开mod_rewrite
[attach]5165[/attach]
如果windows下在httpd.conf中将附图上这行的注释符去掉就行了
[attach]5167[/attach]
如果您是*nix下编译安装,可以参考这个编译参数,这样会把重写模块编译进apache核心中,加快处理速度
./configure \
–prefix=/usr/local/apache \
–with-mpm=prefork \
–enable-so \
–enable-rewrite=static \
–enable-track-vars
3.网站的域名必须做泛解析,就是让*.site.com都能指向的您服务器
本地测试可以修改hosts文件,模拟泛解析
[attach]5168[/attach]
二、配置过程:
1.配置apache的重写表,重写表保存有n级域名和子店实际物理地址的映射关系。
在include/mall_config.php中
$RewriteMap_Url=”rmap/vhost.map”;
设置apache重写表的保存地址,它的位置是相对与syssite目录。
重写表的格式如下
n级域名 子店的实际物理地址
样例:
shop1.www.xuni.com D:/Server/wwwroot/shopexm47/syssite/home/shop/00/00/01
它的内容将会由ShopEx的注册程序在子店开通时生成。
由于这个文件保存有网站的物理地址,务必请将它设置为一个不容易猜测的目录。
[attach]5166[/attach]
2.在apache的配置文件httpd.conf中启用rewrite map功能
打开apache的配置文件httpd.conf在末尾添加以下配置信息
*nix系统的内容如下
RewriteLog logs/rewrite.log
RewriteLogLevel 0
RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/var/www/html/syssite/vhost.map
RewriteCond ${lowercase:%{HTTP_HOST}|NONE} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1 [E=VHOST:${lowercase:%{HTTP_HOST}}]
windows系统的内容如下
RewriteLog logs/rewrite.log
RewriteLogLevel 0
RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:D:/Server/wwwroot/shopexm47/syssite/rmap/vhost.map
RewriteCond ${lowercase:%{HTTP_HOST}|NONE} ^(.+)$
RewriteCond ${vhost:%1} ^(D:/.*)$
RewriteRule ^/(.*)$ %1/$1 [E=VHOST:${lowercase:%{HTTP_HOST}}]
[attach]5169[/attach]
附图中的
RewriteLogLevel 5
是用于调试用的,这样可以在logs/rewrite.log中看到形如:
127.0.0.1 – – [10/May/2007:11:33:42 +0800] [shop1.www.xuni.com/sid#2cc240][rid#5934a80/initial] (4) RewriteCond: input=’shop1.www.xuni.com’ pattern=’^(.+)$’ => matched
127.0.0.1 – – [10/May/2007:11:33:42 +0800] [shop1.www.xuni.com/sid#2cc240][rid#5934a80/initial] (5) map lookup OK: map=vhost[txt] key=shop1.www.xuni.com -> val=D:/Server/wwwroot/shopexm47/syssitehome/shop/00/00/01
127.0.0.1 – – [10/May/2007:11:33:42 +0800] [shop1.www.xuni.com/sid#2cc240][rid#5934a80/initial] (4) RewriteCond: input=’D:/Server/wwwroot/shopexm47/syssitehome/shop/00/00/01′ pattern=’^(D:/.*)$’ => matched
127.0.0.1 – – [10/May/2007:11:33:42 +0800] [shop1.www.xuni.com/sid#2cc240][rid#5934a80/initial] (2) rewrite ‘/index.php’ -> ‘D:/Server/wwwroot/shopexm47/syssitehome/shop/00/00/01/index.php’
以上的log片段就是一个rewrite的过程。
设为5是用于调试的,实际使用环境下务必将RewriteLogLevel 设置为0,否则rewrite的log很快将您的磁盘撑爆!
要点:
1.正则^(.+)$ 要和vhost.map的第一部分匹配,在这个例子中^(.+)$是可以匹配shop1.www.xuni.com的
2.正则^(D:/.*)$要和vhost.map的第二部分匹配,在这个例子中^(D:/.*)$是可以匹配D:/Server/wwwroot/shopexm47/syssite/home/shop/00/00/01的
3.vhost.map的地址要用*nix like的格式,就是要用/表示目录,而不是windows的\
所以win的主机要用
RewriteCond ${vhost:%1} ^(D:/.*)$
把盘符D:加入到正则中,如果您的web文件不是放在D盘而是E盘,要把D:改为E:。
而*nix没有盘符,所以用
RewriteCond ${vhost:%1} ^(/.*)$
4.这段配置信息的位置,一般放在httpd.conf的末尾。但是如果您的总站是用VirtualHost进行绑定,请将以上的配置信息放在在VirtualHost的段中。
样例:
<VirtualHost 10.1.2.3>
DocumentRoot /www/docs/host.foo.com
ServerName host.foo.com
ErrorLog logs/host.foo.com-error_log
TransferLog logs/host.foo.com-access_log
RewriteLog logs/rewrite.log
RewriteLogLevel 0
RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/var/www/html/syssite/vhost.map
RewriteCond ${lowercase:%{HTTP_HOST}|NONE} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1 [E=VHOST:${lowercase:%{HTTP_HOST}}]
</VirtualHost>
三、网店后台配置说明
前缀+商品ID方式 shop shopxxx.mysite.com
申请的商店用户名方式 username.mysite.com (中文名会有问题)
1.必须是apache服务器
Original post by Dmitri Gromov
Thank U for your help.
It’s importent to me so much.