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