Сначала перехватите угловой URL с помощью PHP перед загрузкой веб-страницы - PullRequest
1 голос
/ 29 мая 2019

В настоящее время у нас есть полный Angular-проект, работающий в поддиректории на нашем сервере, и физическое «устройство», использующее жестко закодированный URL для отправки пользователя на эту страницу.

Я ищу какой-тоспособа «перехватить» запрос с помощью PHP-скрипта первым (например, не для реальной цели), чтобы увидеть, включил ли запрошенный параметр «ID» для этой страницы браузера возможность просмотра страницы браузера или была ли она настроенапользователем, чтобы вернуть HTTP-ответ 406 (например).

Currently:
- ..com/app/routing-view?id=1234 => Angular view -> fetch info

Idea:
- ..com/app/routing-view?id=1234 => PHP-script -> isValid => forward to angular and do a normal 'webview' -> fetch info
- ..com/app/routing-view?id=2889 => PHP-script -> notValid => HTTP code

Я думал о том, чтобы .htaccess "перехватил" URL-адрес и перенаправил его в файл .php.Проведите там магию и проверки, а затем перенаправьте браузер на исходный URL-адрес, но чтобы «обойти» предыдущий перехватчик.

Речь идет о последней части, с которой у меня в данный момент возникают проблемы.Поскольку это Angular и он использует пути, я не могу просто сказать «хорошо, перенаправить на index.html вместо index.php», потому что это должно быть что-то вроде ..com/app/routing-view?id=1234 (а index.html находится в/app каталог.

Я не хочу добавлять код PHP в исходный файл Angular-index, если этого можно было бы избежать.

Я смотрю на это право или будетдругой, более эффективный способ решения этой проблемы?

Причина всего этого заключается в том, что я хочу (например) вернуть на устройство другой HTTP-код или другие заголовки вместо ответа заголовка 200 html, даже еслиИдентификатор оказался отключен или что-то в этом роде.

1 Ответ

0 голосов
/ 29 мая 2019

Работает через простой .htaccess, параметр и скрипт "перехватчик". Очень простой и простой, на самом деле, не знаю, почему мой мозг не пошел по этому пути, прежде чем опубликовать мой вопрос.

  1. Добавлен .htaccess в корень приложения Angular со следующим кодом.
RewriteEngine On

# Check if the request has been intercepted before (via URL parameter)
RewriteCond %{QUERY_STRING} !(^|&)intercepted=true

# .. If not, rewrite the page to use the interceptor script (only if it matches the route).
RewriteRule ^my-route dir-of-script/extra/interceptor.php?url=https://%{HTTP_HOST}%{REQUEST_URI}?%{QUERY_STRING} [L,QSA]


# Other stuff for rewriting the Angular routes etc
...

  1. Добавлен /dir-of-script/extra/interceptor.php like-скрипт, который анализирует URL-адрес из параметра GET, извлекает информацию, выполняет проверки и в зависимости от результата возвращает выходные данные или перенаправляет страницу и пропускает ее.

Это добавляет параметр ..&intercepted=true к исходному URL, чтобы .htaccess не перехватывал его снова.

Кажется, это работает как брелок (для моей ситуации). Единственным «недостатком» является то, что это считается перенаправлением, а не просто перезаписью, когда ему было разрешено пройти. Давайте углубимся в это, чтобы, возможно, позволить сценарию PHP «обслуживать» контент Angular вместо перенаправления на него.

...