Назад | Перейти на главную страницу

Как указать любой вариант * .mydomain на localhost (для разработки)?

Я разрабатываю сайт, который будет использовать любую заданную [вариацию] части имени поддомена (то есть часть с префиксом перед именем хоста и, необязательно, часть TLD). Я бы предположил, что на производстве это было бы несложно - убедитесь, что DNS для части доменного имени второго уровня указывает на IP-адрес, настройте виртуальный хост Apache2 для прослушивания этого (или любого) IP-порта 80 и просто используйте PHP для принятия решений на основе заголовка запроса "Host".

Однако в настоящее время это сайт localhost, поскольку я разрабатываю его с помощью своей рабочей станции, поэтому сначала я пропатчил / etc / hosts, чтобы включить:

127.0.0.1 mydomain

Я использовал только одну часть имени (возможно, собственный TLD), чтобы не мешать доменным именам в Интернете. Затем я установил директиву VirtualHost для Apache 2.2, например:

<VirtualHost *:80>
    ServerName mydomain

Но теперь я вижу, что, например. example.mydomain не указывает на localhost, что означает, что добавление / etc / hosts неэффективно для «something.mydomain». Похоже, что правила взяты дословно, и я также проверил, что подстановочные знаки, такие как * .mydomain, не разрешены.

Есть ли решение для этого?

Если вы работаете в Linux (и я предполагаю, что это так, поскольку вы упомянули / etc / hosts), вы можете попробовать dnsmasq для этого. Иногда я использую его для быстрого тестирования и переопределения локального DNS.

Необходимые шаги:

  1. Установить dnsmasq
  2. Настройте вашу станцию ​​на использование dnsmasq для разрешения DNS.

    редактировать /etc/resolv.conf и положи:

    nameserver 127.0.0.1
    

    Побочным эффектом этого является локальное кеширование DNS, что обычно является еще одним плюсом (хотя следует помнить об этом).

  3. Изменить dnsmasq конфигурация.

    редактировать /etc/dnsmasq.conf:

    address=/example.com/127.0.0.1
    

    Вам нужно разместить здесь корневой домен, он должен разрешить все поддомены в localhost сюда.

  4. Начать сначала dnsmasq

  5. Проверить с host example.com и host subdomain.example.com. Оба должны указывать на localhost.