我正在尝试创建一个条件,当请求中包含foo / foofile.txt时,会将http://subdomain.example.com/foo/foofile.txt的网址重写为http://example.com/foo/foofile.txt。如果有人能指出我正确的方向,我会感激任何和所有的帮助...
提前致谢, 乙
答案 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次尝试时得到它...)。我每次都可以清除浏览器缓存;这更快。