Рейтинг:0

Перенаправить URL-адрес на действие в индексе?

флаг in

Я использую веб-сервер Apache на Ubuntu 20.04.

у меня есть домен.com который направляет клиентов к index.html. На сайте есть кнопка, при нажатии на которую открывается всплывающий виджет календаря. Я хотел бы, чтобы люди, которые идут в домен.com/расписание чтобы попасть на страницу индекса, как если бы они нажали эту кнопку.

Как я могу сделать это просто?

Рейтинг:3
флаг es

Вам определенно нужно вызвать всплывающее окно на стороне клиента. Вот краткий пример, который вы можете легко попробовать и настроить (и обезопасить) в соответствии с вашими потребностями:

<html>
  <head>
      <script type="text/javascript">
        function isScheduleRequested() {
        if(window.location.href.includes('/schedule')) {
          document.getElementById('button').click();
        }
      }
      </script>
  </head>
  <body onload='isScheduleRequested();'>
      <button type="button" name="button" id="button" onclick="alert('Opening calendar');">Open calendar</button>
  </body>
</html>

Что это делает, вообще говоря, проверяет, содержит ли URL-адрес текущей страницы подстроку '/schedule' (где угодно, не обязательно в конце, даже не только один раз), и, если это так, то вызывает кнопку нажмите событие.

onload='isScheduleRequested(); бит просто для того, чтобы убедиться, что скрипт javascript выполняется после загрузки тела (и элемент кнопки существует).

Вы даже можете попробовать это на своем компьютере. Сохраните этот код как «index.html» и откройте его в браузере. Ничего не произойдет, пока вы не нажмете кнопку.Однако, если вы добавите ?q=/расписание к URI, будет запущено событие «щелчка» кнопки. (В этом примере нам нужно передать /график строка как часть параметра GET, поскольку нет ни доменного имени, ни сервера, ни чего-либо необычного.).

donkey avatar
флаг in
Это отличное начало, но оно работает только для domain.com?q=/schedule, тогда как я хотел бы, чтобы оно работало для domain.com/schedule. Однако, когда я сейчас захожу на domain.com/schedule, он правильно говорит, что такого каталога нет. Как я могу заставить это перенаправить на мой index.html?
флаг es
Самым простым решением, которое я могу придумать, является определение псевдонима.Что-то вроде `Alias ​​/schedule "/var/www/"`, где `/var/www/` - это ваш текущий DocumentRoot, должно работать. В основном он вызывает тот же индекс каталога, хотя вы должны быть осторожны со всеми своими относительными путями.
donkey avatar
флаг in
Где бы я определил указанный псевдоним?
флаг es
Либо в вашем _httpd.conf_, либо в файле _conf_ вашего виртуального хоста, желательно до того, как он будет соответствующим раздел. Например: ``Псевдоним "/schedule" "/var/www" Индексы опционов FollowSymLinks Разрешить переопределить все Требовать все предоставленные ``
Рейтинг:0
флаг in

На сервере Apache вы можете создать правило перезаписи для рендеринга того же index.html из другого пути, но отображение всплывающего виджета — это то, что вам нужно решить на стороне приложения (например, JavaScript может использовать URL-адрес веб-API.pathname для обнаружения посещения домен.com/расписание URL). Когда ваше приложение обнаруживает, что пользователь посетил домен.com/расписание (на основе пути), он может вызвать действие открытия всплывающего виджета.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.