(ISAPI_Rewrite)请求某个文件时重写域

时间:2011-02-21 19:16:31

标签: url-rewriting isapi-rewrite

我正在尝试创建一个条件,当请求中包含foo / foofile.txt时,会将http://subdomain.example.com/foo/foofile.txt的网址重写为http://example.com/foo/foofile.txt。如果有人能指出我正确的方向,我会感激任何和所有的帮助...

提前致谢, 乙

1 个答案:

答案 0 :(得分:2)

这是将特定子域重定向到主域,用于特定文件。

您使用的是哪个版本的isapi_rewrite,v2还是v3?

这假定为v3:

RewriteCond %{HTTP:Host} ^subdomain\.(.*)$
RewriteRule ^(/foo/foofile3\.txt)$ http://%1$1 [NC,R=301]

RewriteCond测试以子域(和点)开头的主机,并在重写规则中为方便起见捕获剩余的(example.com)。您也可以将特定的example.com放在那里,但这使它更通用。

然后,RewriteRule会查找特定的/foo/foofile3.txt,并将其捕获(同样为了方便在规则中不重复它)。在条件(example.com)中捕获的结果为%1,在规则中捕获的结果为$ 1(/foo/foofile3.txt)

NC不区分大小写,R = 301是永久重定向。

使用v3,会自动处理查询字符串参数,因此保留文件之后的任何参数。

使其更复杂的其他可能性是任何子域,或文件名模式而不是一个特定文件。

我在浏览器缓存我的尝试时遇到了问题,同时使规则正确。因此,即使我更改了规则,浏览器也缓存了我之前的重定向。我的快速修复是计算新网址的文件名:foofile2,foofile3(我想我在第3次尝试时得到它...)。我每次都可以清除浏览器缓存;这更快。