有人可以帮助我将以下伪代码翻译成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让我非常困惑。
非常感谢任何和所有帮助。
答案 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)保存到该虚拟目录/域的根文件夹中的特定虚拟目录/域。
这也消除了污染全局配置文件。