Apache mod-rewrite使用查询字符串重定向域名

时间:2009-12-01 09:13:10

标签: apache mod-rewrite query-string

我们的客户在英国有很多分店。他们的一些分支机构拥有自己的网站,并拥有自己的域名。客户端有一个部分构建的系统,访问:

www.client.com/aboutus.php?id=branchId

显示该特定分支的“关于我们”页面。我需要的是一种将特定域映射到其branchId的方法(目前这都存储在数据库中),以便

www.client.com/aboutus.php?id=4

映射到

www.branchid4.com/aboutus.php

2 个答案:

答案 0 :(得分:1)

这对我有用。不确定您的域是否可以使用单个通用规则集(即获取ID然后在重写中使用它),否则您需要重复每个URL的最后3行

Options +FollowSymLinks 
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www.)?client.com$
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /aboutus\.php\?id=4\ HTTP/
RewriteRule ^.*$ http://www.branchid4.com/about.php? [R=301,L]

答案 1 :(得分:0)

您可以从主机名中取出关键部分并将其传递给您的脚本:

RewriteEngine on
RewriteCond %{QUERY_STRING} !(^|&)branchName=
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.com$
RewriteRule .* $0?branchName=%1 [L,QSA]