Коротко о разном

Как в .htaccess сделать авторизацию по условию?

Как разрешить доступ к сайту всем пользователям с определенного IP адреса, а всем остальным разрешить доступ только по паролю через аутентификацию?

AuthName "Members Only"
AuthType Basic
AuthUserFile /www/passwd/.htpasswd
require valid-user
Order allow,deny
Allow from 11.22.33.44
Deny from All
Satisfy any

См. также документацию по Apache: Authentication, Authorization, and Access Control -> Satisfy

ошибка 404 (error 404, Apache, htaccess)

Рано или поздно у разработчика возникает мысль: "Нужна собственная обработка ошибки 404". Вот она посетила и тебя, коллега :-)

Для этого (все о чем здесь говорится относится к серверу Apache) нам нужно создать в корневом каталоге сайта файл .htaccess со следующим содержимым:

ErrorDocument 404 /errors/404.html

где файл 404.html - своя страница, поэтому не забудь создать каталог errors, а в нем файл 404.html

Конечно вместо /errors/404.html вы можете указать любой другой URL. При этом страница обработки ошибки 404 может быть и скриптом, например на PHP. Таким же образом можно обрабатывать самомстоятельно и другие ошибки.

ErrorDocument 403 /errors/error.php?403
ErrorDocument 404 /errors/error.php?404
ErrorDocument 500 /errors/error.php?500

Наиболее полезные ошибки: 403, 404, 500.

Для чего нужен ETag заголовок HTTP, который выдает Apache?

При выдаче документа, основанного на файле (картинка, zip-файл и т.д.), Apache формирует в ответе заголовок ETag (объектная метка) . По сути ETag - это уникальный идентификатор документа, значение которого меняется при изменении документа. ETag используется при кэшировании документа. Этот заголовок сохраняется на клиенте, и в случае повторного обращения к документу позволяет браузеру обратиться к серверу с запросом 'If-None-Match', а сервер должен по значению ETag-метки определить, не изменился ли документ, и если нет, ответить кодом '304 Not Modified'.

В Apache значение ETag формируется из inode файла, размера файла, и времени его последней модификации (mtime). ETag в Apache равен 16-тиричному представлению Inode-FileSize-mtime, где mtime это Unix timestamp (количество секунд прошедших с 1 января 1900 года). Заголовок ETag появился в HTTP 1.1.

См. Inode в словаре терминов

См. пример на PHP, вычисления ETag как в Apache

SMTP ответ "AUTH=LOGIN" - что это значит?

SMTP сервер на команду EHLO выдает список поддерживаемых им расширений. Если сервер поддерживает аутентификацию, то в ответе будет ключевое слово AUTH со списком параметров, определяющих поддерживаемые сервером методы аутентификации. Дык вот, строк с ключевым словом AUTH может быть и две.

Например:

250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5

А зачем? Так вот, строка в которой используется "AUTH=..." выдается некоторыми серверами для "кривых" клиентов (например, Outlook Express 4.0), которым нужен именно такой неправильный формат, чтобы понять, что они могут использовать SMTP аутентификацию.

К слову в черновом варианте №10 спецификации о SMTP аутентификации (draft-10 of SMTP AUTH spec) используется именно "AUTH=", а не "AUTH ". Но это было давно и не правда :-), на данный момент спецификация "RFC 2821 - Simple Mail Transfer Protocol" четко определяет формат ответа сервера на команду EHLO в котором нет знака "=".