Что такое формат поля NAME в разделе ответа DNS?

Поле NAME не подробно описано в разделе 4.1.3 RFC 1035.

I хочу понять это поле (программно) для типа сообщения ANSWER, и я искал эти ресурсы (таблицу) для этого.

Я следил:

  • IETF RFC 2181
  • www.ccs.neu.edu

Я что-то пропустил?

псевдокод:

ВОПРОС:

byte[]{
    0x00,0x00,
    0x01,0x00,
    0x00,0x02,
    0x00,0x00,
    0x00,0x00,
    0x00,0x00,
    0x03,0x77,0x77,0x77,
    0x12,0x74,0x68,0x65,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x67,0x65,0x65,0x6b,
    0x03,0x63,0x6f,0x6d,
    0x00,
    0x00,0x01,
    0x00,0x01,
    0x13,0x74,0x74,0x68,0x65,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x67,0x65,0x65,0x6b,
    0x03,0x63,0x6f,0x6d,
    0x00,
    0x00,0x01,
    0x00,0x01
}

ОТВЕТ: // имя_сервера бит

0
задан 8 August 2016 в 00:03
1 ответ

Просто не знаю, как автоматически добавлять имя сервера

Вам не нужно . Фактически, вы не можете «автоматически» добавить servername с помощью директивы mod_alias Redirect . Всегда безопаснее включать жестко запрограммированный абсолютный URL-адрес для цели, однако URL-адрес, относящийся к корневому каталогу, все равно должен работать нормально на одном каноническом хосте, что, по-видимому, имеет место в данном случае. (?) Если это не работает, то, возможно, это указывает на некоторую другую неправильную конфигурацию сервера?

В качестве альтернативы вы можете попробовать перенаправление mod_rewrite (если включено) (с помощью директивы RewriteRule ). Это обеспечивает переменные для имени сервера, хотя, опять же, в этом нет необходимости.

Просто обратите внимание, что вы не должны смешивать перенаправления mod_alias и mod_rewrite. Смешивание директив может привести к неожиданным конфликтам, поскольку два модуля работают в разное время, независимо от их очевидного порядка.

Попробуйте следующее перенаправление mod_rewrite в .htaccess вместо Redirect в вашем вопросе. 1213] Чтобы специально использовать «переменные» в подстановке RewriteRule :

RewriteRule ^index\.html http://%{SERVER_NAME}/default.php [R=302,L]

Обратите внимание, что это должно происходить после любого канонического перенаправления.

Вместо SERVER_NAME вы можете использовать ] HTTP_HOST для ссылки на имя хоста, используемое в запросе. Хотя, в зависимости от конфигурации вашего сервера, они, вероятно, относятся к одному и тому же (то есть к имени хоста, используемому в запросе).

Это, очевидно, жестко кодирует протокол, например. http (или https ). У вас действительно есть запросы со смешанным протоколом? (В идеале это должно быть канонизировано ранее в запросе.)

Это также 302 (временное) перенаправление. Измените его на 301 , когда будете уверены, что он работает - если это необходимо. Временные перенаправления легче тестировать, поскольку они не кэшируются браузером.


Кроме того: это перенаправление действительно выглядит немного «подозрительным». Обычно вы не обязательно ожидаете, что index.html или default.php будут частью видимого URL. Вместо этого Apache (используя директиву DirectoryIndex для mod_dir) может автоматически обслуживать (посредством внутренней перезаписи) соответствующий документ DirectoryIndex при запросе родительского каталога (заканчивающегося косой чертой). Итак, вы можете изменить документ DirectoryIndex :

DirectoryIndex disabled
DirectoryIndex default.php

Это будет искать default.php (только) в любом запрашиваемом каталоге. Строка disabled необходима для того, чтобы удалить предыдущий документ, поскольку к списку обычно добавляются дополнительные документы, что может быть нежелательно, если старый документ ( index. html ) все еще существует.

0
ответ дан 5 December 2019 в 09:42

Теги

Похожие вопросы