Сделайте URL-запросы читабельными для php - PullRequest
0 голосов
/ 08 сентября 2018

Я пытаюсь реализовать какой-либо php на сервере Apache 2+, к которому у меня нет доступа с правами root.Один сценарий должен принимать переменные в URL, но API, который отправляет мне данные, генерирует строку URL с символом #.

URL в вопросе будет выглядеть следующим образом:

http://website.name.com/script.php#foo=1&bar=2

Есть ли способ для переменных foo и bar достичь значения script.php?В других ответах я читал, что все после # не анализируется сервером, поэтому я попытался использовать файл .htaccess с RewriteRule для замены хэштега, но я не смог создать работающийКоманда RegEx.

1 Ответ

0 голосов
/ 08 сентября 2018

Нет, дело не в том, что он не анализируется сервером, проблема в том, что он никогда не отправляется на сервер. Все, что после #, является локальным якорем и доступно только в текущем контексте браузера (поэтому Javascript сможет прочитать его, так как он работает в текущем контексте браузера).

Поскольку он никогда не отправляется на сервер, его нельзя переписать или прочитать (поскольку он не существует) на стороне сервера.

Что вы можете сделать, это создать небольшой кусочек Javascript на получившейся странице в script.php, а затем отправить его обратно на сторону сервера - либо через редирект, либо через fetch или xmlhttprequest .

Чтобы воссоздать запрос как запрос GET с теми же параметрами, которые указаны в локальной привязке, вы можете использовать location.hash и удалить #:

location.href = 'realscript.php?' + location.hash.substring(1);

.. но я бы подумал о том, чтобы проанализировать хеш самостоятельно, а затем явно делать все, что необходимо в Javascript, вместо того, чтобы так перенаправлять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...