我一直在使用Google地狱,因为我遇到了问题,到目前为止我没有找到任何可行的方法。.htaccess:使用RewriteCond的域名
我所拥有的是一个Drupal多站点安装,我正尝试为移动设备设置重定向。要开始,我有10个域只有一个公共字符串www。我想要的是检查浏览该网站的设备是否为移动设备(我正在使用AMF成功完成此操作),并确保访问者尚未在移动版本m.domain.tld上。如果一切都很好,那么我需要将用户重定向到移动子域。
这样做每个领域作品使用如下:
RewriteCond %{ENV:AMF_DEVICE_IS_MOBILE} ^true$
RewriteCond %{ENV:AMF_DEVICE_IS_TABLET} !^true$
RewriteCond %{HTTP_HOST} !^[m.]+mysite.com$
RewriteRule (.*) http://m.mysite.com/$1 [R=301,L]
我不知道,不过,想拥有这些区块的10(1为每个域)我也不希望有创建另一个块每我们创建一个新网站。
我读过,你可以在RewriteCond模式中使用()使匹配模式中的一个var。不幸的是,我不认为我正在做我的模式或东西,因为当我尝试下面它重定向到M.随后是uri的请求。
为了简洁起见,我将略去AMF条件。
RewriteCond %{HTTP_HOST} !^[m.]+([^.]\.[com|net|org])$
RewriteRule (.*) http://m.%1/$1 [R=301,L]
从我读的,%1应该匹配我的模式从RewriteCond,但它不匹配任何东西。这让我觉得我的模式是错误的。我尝试将([^。]。[com | net | org])更改为(。*),但得到相同的问题,它只是重定向到m ..
我正确地假设我的模式是错误的如果是的话,我应该使用什么?我试图做甚至可能吗?
需要明确的是,我的域在形式:
www.domain.com
www.anotherdomain.net
somedomain.org
www.maybeanotherdomain.com
在我的例子中,我有R = 301的标志,但是在测试中,我将其从浏览器中清除了很多数据,每次我测试mak我确定我正在接受新规。
在此先感谢您的帮助!
太棒了!我从来没有看到任何提及你以前不能这样做的事情。太感谢了! :D – 2012-07-11 18:16:55
@JasonGray如果有反向引用的方法,我不知道它是如何完成的,但只是像'!(表达式)'这样的东西不起作用。 – 2012-07-11 18:22:27