В 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
флаг к последнему правилу как флаг цепочки.