Как преодолеть корневые ограничения домена CNAME?

  • Вы хотите создать поле выбора и поместить значения из столбца «A» электронной таблицы.
  • Когда выбрано значение из поля выбора, вы хотите получить его.
  • Если мое понимание верно, как насчет этой модификации? Я думаю, что есть несколько ответов для вашей ситуации, поэтому, пожалуйста, подумайте об этом как об одном из них.

    Процесс этого модифицированного сценария выглядит следующим образом.

    1. Открыть диалоговое окно.
    2. Нажмите кнопку «Выпадающий».
    3. С помощью google.script.run запустите функцию getValuesFromSpreadsheet() на стороне скрипта Google Apps.
    4. На getValuesFromSpreadsheet() значения извлекаются из электронной таблицы и возвращаются в Javascript.
    5. На withSuccessHandler() возвращенные значения извлекаются. Используя значения, создается поле выбора.
    6. Когда выбрано значение в поле выбора, запускается selected() и извлекается выбранное значение.

    Когда вышеуказанный поток отражается, модифицированный скрипт выглядит следующим образом.

    GAS:

    Добавьте следующий скрипт Google Apps в CustomMenu.gs.

    function getValuesFromSpreadsheet() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
      return sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues(); // Retrieve values and send to Javascript
    }
    
    • В этом примере сценария значения извлекаются из «Лист1» активной электронной таблицы. Значения находятся в столбце «А».
      • Если вы хотите получить данные из другого диапазона и листа, пожалуйста, измените это.

    HTML:

    Пожалуйста, добавьте следующий Javascript в NewComponentForm.html.

    
    
    • Используйте google.script.run для извлечения значений из электронной таблицы.
    • Используя withSuccessHandler, получите значения из Google Apps Script.
    • При нажатии кнопки «Раскрывающийся список» создается поле выбора.
    • Выбранное значение можно увидеть на консоли.

    Примечание:

    • Это простой пример сценария. Поэтому, пожалуйста, измените его для вашей ситуации.

    Ссылки:

    Если я неправильно понял ваш вопрос, извините.

112
задан Patrick Mevzek 2 August 2018 в 23:31
поделиться

5 ответов

И благодаря sipwiz и благодаря MrEvil. Мы разработали Сценарий PHP, который проанализирует URL, который вводит пользователь, и вставить www к вершине его. (например, если клиент введет kiragiannis.com, то это перенаправит на www.kiragiannis.com). Так наша клиентская точка их корень (например. customer1.com кому: A запишите, где наш веб-редиректор), и затем www CNAME к реальному A записью управляем мы.

Ниже кода в случае, если Вам интересно для будущего мы.

<?php
$url = strtolower($_SERVER["HTTP_HOST"]);

if(strpos($url, "//") !== false) { // remove http://
  $url = substr($url, strpos($url, "//") + 2);
}

$urlPagePath = "";
if(strpos($url, "/") !== false) { // store post-domain page path to append later
  $urlPagePath = substr($url, strpos($url, "/"));
  $url = substr($url, 0, strpos($url,"/"));
}


$urlLast = substr($url, strrpos($url, "."));
$url = substr($url, 0, strrpos($url, "."));


if(strpos($url, ".") !== false) { // get rid of subdomain(s)
  $url = substr($url, strrpos($url, ".") + 1);
}


$url = "http://www." . $url . $urlLast . $urlPagePath;

header( "Location:{$url}");
?>
-6
ответ дан 3 revs, 2 users 97% 24 November 2019 в 02:53
поделиться

Sipwiz корректен единственный способ сделать, это правильно - гибридный подход DNS и HTTP. Мой регистратор является торговым посредником для Tucows, и они предлагают корневой домен, передавая как свободная дополнительная услуга.

, Если бы Вашим доменом является blah.com, они спросят Вас, где Вы хотели бы домен, переданный, и Вы вводите в www.blah.com. Они присваивают запись на свой апачский сервер и автоматически добавляют blah.com как DNS vhost. vhost отвечает ошибкой HTTP 302 при перенаправлении их к надлежащему URL. Это просто к сценарию/установке и может быть обработано нижним уровнем, иначе были бы фрагментированные аппаратные средства.

Выполнение следующая команда для примера: завихритесь-v eclecticengineers.com

3
ответ дан MrEvil 24 November 2019 в 02:53
поделиться

Моя компания делает то же самое для многих клиентов, где мы размещаем веб-сайт для них, хотя в нашем случае это - xyz.company.com, а не www.company.com. Мы действительно заставляем их устанавливать рекорд на xyz.company.com для указания на IP-адрес, мы выделяем их.

относительно того, как Вы могли справиться с изменением в IP-адресе, я не думаю, существует идеальное решение. Некоторые идеи:

  • Использование NAT или подсистема балансировки нагрузки IP и дают Вашим клиентам IP-адрес, принадлежащий ему. Если IP-адрес веб-сервера должен измениться, Вы могли бы сделать обновление на NAT или подсистеме балансировки нагрузки,

  • Предложение услуга хостинга DNS также и заставить Ваших клиентов размещать свой домен с Вами так, чтобы Вы имели возможность обновлять, записи,

  • Заставляют Ваших клиентов устанавливать их запись до одного основного веб-сервера и использовать перенаправление HTTP для веб-запросов каждого клиента.

3
ответ дан sipwiz 24 November 2019 в 02:53
поделиться

CNAME'инг корневой записи технически не соответствует RFC, но имеет ограничения, означающие, что это практика, которая не рекомендуемые.

Обычно ваша корневая запись содержит несколько записей. Скажем, 3 для ваших серверов имен, а затем один для IP-адреса.

По RFC:

Если в узле присутствует запись CNAME, никаких других данных не должно быть. Настоящий документ

И согласно IETF «Распространенные ошибки в работе и конфигурации DNS» Документ:

Это часто делают неопытные администраторы очевидным способ, чтобы ваше доменное имя также было хостом. Тем не менее, DNS серверы типа BIND увидят CNAME и откажутся добавлять любые другие ресурсы для этого имени. Поскольку никакие другие записи не разрешены сосуществовать с CNAME, записи NS игнорируются. Поэтому все хосты в домене podunk.xx также игнорируются!

Ссылки:

50
ответ дан 24 November 2019 в 02:53
поделиться

Я вижу, что readytocloud.com размещен на Apache 2.2.

Существует гораздо более простой и эффективный способ перенаправить сайт без www на сайт www в Apache.

Добавьте следующие правила перезаписи в конфигурации Apache (внутри виртуального хоста или за его пределами. Это не имеет значения):

RewriteCond %{HTTP_HOST} ^readytocloud.com [NC]
RewriteRule ^/$ http://www.readytocloud.com/ [R=301,L]

Или следующие правила перезаписи, если вы хотите, чтобы URL-адреса отображались один-к-1 из не- Сайт www на сайт www:

RewriteCond %{HTTP_HOST} ^readytocloud.com [NC]
RewriteRule (.*) http://www.readytocloud.com$1 [R=301,L]

Обратите внимание, что модуль mod_rewrite должен быть загружен, чтобы это работало. К счастью, readytocloud.com работает на платформе CentOS, которая по умолчанию загружает mod_rewrite.

У нас есть клиентский сервер, на котором запущен Apache 2.2 с немногим менее 3000 доменов и почти 4000 перенаправлений, однако нагрузка на сервер колеблется в районе 0,10 - 0,20 .

-2
ответ дан 24 November 2019 в 02:53
поделиться
Другие вопросы по тегам:

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