Helicon Tech - ISAPI_Rewrite:特定域的RewriteRule

时间:2009-01-21 13:04:40

标签: url-rewriting

有人可以帮助我将以下伪代码翻译成Helicon Tech's ISAPI_Rewrite module所理解的代码:

if (domain == something.com OR domain == www.something.com)
{
    // The rules inside this scope will only apply to the domain:
    // something.com / www.something.com

    // This should match "something.com/test" and/or "www.something.com/test"
    RewriteRule /something /something/something.aspx
}


if (domain == test.com OR domain == www.test.com)
{
    // The rules inside this scope will only apply to the domain:
    // test.com / www.test.com

    // This should match "test.com/test" and/or "www.test.com/test"
    RewriteRule /test /test/test.aspx
}

documentation让我非常困惑。

非常感谢任何和所有帮助。

4 个答案:

答案 0 :(得分:3)

如果ISAPI_Rewrite的工作方式与Apache的mod_rewrite相同,请尝试以下方法:

RewriteCond %{HTTP_HOST} ^(www\.)?something\.example$
RewriteRule ^/something$ /something/something.aspx

RewriteCond %{HTTP_HOST} ^(www\.)?test\.example$
RewriteRule ^/test$ /test/test.aspx

注意:我根据RFC 2606使用了其他域名。


修改:对于ISAPI_Rewrite,您似乎必须将%{HTTP_HOST}替换为Host:才能获取当前主机。

答案 1 :(得分:2)

这是在版本3之前使用的“旧”语法:

RewriteCond Host: ^(www\.)?something\.com$
RewriteRule ^/something$ /something/something.aspx

RewriteCond Host: ^(www\.)?something\.com$
RewriteRule ^/test$ /test/test.aspx

对于版本3及更高版本,这将是新语法。这更接近于mod_rewrite:

RewriteCond %{HTTP:Host} ^(www\.)?something\.com$
RewriteRule ^/something$ /something/something.aspx

RewriteCond %{HTTP:Host} ^(www\.)?something\.com$
RewriteRule ^/test$ /test/test.aspx

正则表达式本身在两个版本中都是相同的。

答案 2 :(得分:1)

请注意,ISAPI 3简易版不支持上述每个目录的httpd.ini方法:http://www.helicontech.com/isapi_rewrite/doc/litever.htm

答案 3 :(得分:0)

感谢Gumbo和Tomalak的努力。真的很感激。

我已经想出了另一种方法:你把一个文件(httpd.ini)保存到该虚拟目录/域的根文件夹中的特定虚拟目录/域。

这也消除了污染全局配置文件。