Итак, я делаю mod_rewrite, и я в ситуации, когда мне нужно, чтобы соответствовать любому поддомену, кроме одного. Это начинается так.Сопоставьте все поддомены, кроме одного в mod_rewrite
RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$ [NC]
Таким образом, чтобы совместить и фиксировать единый поддомен, нет периодов. Но скажем, я не хочу соответствовать поддомену по имени «собака». Я попытался сделать это с таким негативным взглядом.
RewriteCond %{HTTP_HOST} ^((?!dog)[^\.]+)\.example\.com$ [NC]
Это работает, по большей части. dog.example.com больше не подходит, что хорошо. Однако doggies.example.com также больше не соответствует. Это не хорошо.
Я смог исправить это, используя отрицательный lookahead в сочетании с негативным внешним видом.
RewriteCond %{HTTP_HOST} ^((?!dog)[^\.]+(?<!dog))\.example\.com$ [NC]
Это работает. Насколько я могу судить, он работает отлично. Дело в том, что я не могу поверить, что это лучший способ достичь этого матча. Взгляд и взгляд сзади? В самом деле? Каков «правильный» способ достижения эквивалентного выражения?
+1, ты злой бобер :-) –
Да, спасибо! – Apreche