我正在尝试创建一个条件, 当请求具有 foo/foofile.txt 时,将URL 从http://subdomain.example.com/foo/foofile.txt重写为http://example.com/foo/foofile.txt在里面。如果有人能指出我正确的方向,我将不胜感激任何和所有的帮助......
在此先感谢,B
我正在尝试创建一个条件, 当请求具有 foo/foofile.txt 时,将URL 从http://subdomain.example.com/foo/foofile.txt重写为http://example.com/foo/foofile.txt在里面。如果有人能指出我正确的方向,我将不胜感激任何和所有的帮助......
在此先感谢,B
这是针对特定文件将特定子域重定向到主域。
您使用的是哪个版本的 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 用于捕获,在规则 (/foo/foofile3.txt) 中有 $1 用于捕获
NC 不区分大小写,R=301 是永久重定向。
使用 v3,查询字符串参数会被自动处理,所以这会保留文件之后的任何参数。
使其更复杂一点的其他可能性是任何子域,或者文件名模式而不是一个特定的文件。
在正确设置规则时,我在浏览器缓存我的尝试时遇到了问题。因此,即使我更改了规则,浏览器也缓存了我之前的重定向。我的快速解决方法是计算新网址的文件名:foofile2,foofile3(我想我在第三次尝试时得到了它......)。我也可以每次都清除浏览器缓存;这更快。