В MOD_Rewrite / ISAPI_Rewrite как сделать так, чтобы правила влияли на конкретные домены?

Я только что мигрировал с хоста Linux на выделенный сервер с Windows 2003, у меня был только один сайт, использующий Mod_rewrite, но с ISAPI _Rewrite 3 бесплатно, правила глобальны.

Как мне написать условие, влияющее только на "mysite.com", а не на другие?

это мой httpd.conf файл

# Helicon ISAPI_Rewrite configuration file
# Version 3.1.0.66

RewriteEngine On
RewriteBase /
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?page=$1 
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?page=$1&id=$2 [L]

Я не хочу покупать ISAPI_Rewrite только для этого сайта

Спасибо

1 ответ

Решение

По крайней мере, в отношении Apache mod_rewrite, вы можете использовать C флаг для цепочки правил следующим образом:

RewriteCond %{HTTP_HOST} =example.com
RewriteRule ^ - [C]
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?page=$1 [C]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?page=$1&id=$2 [L]

Если одно правило не совпадает, все последующие правила будут пропущены. Это означает, что если первое правило не совпадает (имя хоста не example.com), следующие цепочки правил пропускаются. Примечание не добавлять C флаг к последнему правилу как флаг цепочки.

Другие вопросы по тегам