Может ли кто-нибудь помочь мне перевести следующий псевдокод в код, понятный Модуль ISAPI_Rewrite от Helicon Tech:
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
}
документация меня очень сбивает с толку.
Любая помощь очень ценится.





Если ISAPI_Rewrite работает так же, как mod_rewrite в Apache, попробуйте следующее:
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:, чтобы получить текущий хост.
Это «старый» синтаксис, использовавшийся до версии 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
Само регулярное выражение в обеих версиях одинаково.
Это то, что мне дал их собственный инструмент для преобразования синтаксиса.
Не так быстро:% {HTTP: Host} обращается к необработанному заголовку, тогда как% {HTTP_HOST} обращается к переменной сервера. Не каждый заголовок имеет соответствующую серверную переменную, но в этом случае они оба должны содержать одно и то же значение. (Я считаю, что mod_rewrite вообще не может получить доступ к заголовкам.)
Спасибо за усилия, Гамбо и Томалак. Действительно ценю это.
Однако я придумал другой подход: вы помещаете файл (httpd.ini), содержащий определенные перезаписи, в конкретный виртуальный каталог / домен в корневую папку этого виртуального каталога / домена.
Это также устраняет загрязнение глобального файла конфигурации.
Как это связано с вашим вопросом? :-)
Просто обратите внимание, что описанный выше метод httpd.ini для каждого каталога не поддерживается облегченной версией ISAPI 3: http://www.helicontech.com/isapi_rewrite/doc/litever.htm
Я думаю, что новый синтаксис должен быть% {HTTP_HOST} (подчеркивание вместо двоеточия).