.shtml - как перенаправить И передать URI

На моем общем сервере я пытаюсь создать пользовательскую страницу 404. Этот конкретный хост использует SHTML, и я не могу переписать..

Я могу отобразить URI:

<!--#echo var="REQUEST_URI" -->

Я могу сделать URI частью переменной:

<!--#set var="URI" value="404.php?xxx=$REQUEST_URI" -->

Я могу перенаправить на свою собственную страницу 404.php:

<!--#exec cgi="404.php" -->

но я не могу поместить значение переменной URI в редирект. Ни одна из этих работ:

<!--#exec cgi="404.php?xxx=$REQUEST_URI" -->

<!--#exec cgi="$URI" -->

<!--#exec cgi="URI" -->

какие идеи будут работать? Заранее спасибо.

1 ответ

Решение

Из документации на exec элемент:

Сценарию CGI присваивается PATH_INFO и строка запроса (QUERY_STRING) исходного запроса от клиента; они не могут быть указаны в пути URL. Переменные включения будут доступны сценарию в дополнение к стандартной среде CGI.

...

Виртуальный элемент include следует использовать вместо exec cgi. В частности, если вам нужно передать дополнительные аргументы в CGI-программу, используя строку запроса, это нельзя сделать с помощью exec cgi, но можно сделать с помощью include virtual, как показано здесь:

<!--#include virtual="/cgi-bin/example.cgi?argument=value" -->

Есть два варианта, которые могут быть приняты:

  • Использовать 404.php скрипт через существующий <!--#exec cgi элемент. Он должен иметь возможность немедленно использовать соответствующие переменные CGI (например, $_SERVER['REQUEST_URI']).
  • Изменить, чтобы использовать <!--#include virtual элемент и передать необходимые переменные.

Лично я бы пошел с первым вариантом.

Другие вопросы по тегам