По CNAME кажется, что вы на самом деле ссылаетесь на запрашиваемое имя хоста. (Имя хоста мы собираемся на .)
Таким образом, любой, кто запрашивает xxx.example.com
, имеет неограниченный доступ ИЛИ клиент с IP-адресом 11.22.33.44
, независимо от имени запрашиваемого хоста ( при условии, что вы обслуживаете несколько имен хостов).
Allow from xxx.example.com
Это проверяет разрешенное имя хоста клиента, выполняющего запрос - это не одно и то же. (Чтобы получить здесь имя хоста, сервер должен выполнить DNS-поиск IP-адреса клиента - это отключено на некоторых общих серверах из-за дополнительных издержек, которые он размещает на сервере). Для большинства пользователей это просто относится к провайдеру, через который они получают доступ к inte rnet.
Кроме того, директивы Order
, Deny
и Allow
являются директивами Apache 2.2. Если вы используете Apache 2.4, то вам, вероятно, следует использовать директивы Require ...
. Если вы не поддерживаете обратную совместимость с сервером, который все еще использует старые директивы Apache 2.2 (эти два не следует смешивать).
На Apache 2.4 вы можете использовать Apache Выражения ... поэтому используйте HTTP-аутентификацию только в том случае, если IP-адрес клиента не равен 11.22.33.44
и xxx.example.com
не запрашиваемый хост.
Например:
<If "%{HTTP_HOST} != 'xxx.example.com' && %{REMOTE_ADDR} != '11.22.33.44'">
AuthType Basic
AuthName "Entwurf"
AuthUserFile /my/path/to/.htpasswd
Require valid-user
</If>
Вы также используете curly кавычки в директиве AuthName
- может быть, это просто проблема с форматированием в вашем вопросе?