.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
элемент и передать необходимые переменные.
Лично я бы пошел с первым вариантом.