Я настроил пользовательскую страницу ошибки php 404, IIS > MySite > Error Pages
но $ _POST массив всегда пуст. Это нормально? Как мне сказать IIS передавать данные POST на страницу ошибок PHP?
IIS 7.5
отказ: Этот ответ дается в чтении между строк.
Как я отмечал в комментариях, нет никаких оснований для обработки какого-либо пользовательского ввода, если запрос недействителен. Код статуса HTTP 404 буквально означает, что этот запрос недействителен, потому что ресурс не может быть найден.
От Википедия
Запрашиваемый ресурс не найден, но может быть снова доступен
в будущем. Последующие запросы клиента допустимы.
Что такое пост? От Википедия
Согласно RFC 7231, метод POST должен использоваться для любого контекста, в котором
запрос не идемпотентен, то есть это вызывает изменение в сервере
указать каждый раз, когда это выполняется, например, отправив комментарий
сообщение в блоге или голосование в онлайн-опросе. […]
Я не могу подтвердить или опровергнуть, если это правда, что IIS
нет сообщений на 404
, так как я никогда не пробовал это. Но не имеет смысла поддерживать.
Для меня это звучит как, вы хотите переписать какой-то запрос. Для этого вам нужен Переписать модуль.
Тогда вы могли бы иметь web.config
как это.
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="RequestString">
<match url="^(.*)$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?requestString={R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
На ваше index.php
вы можете иметь:
echo $_GET['requestString'];
Если вы позвоните по URL http://yourwebsite.com/foo/bar
вы будете эхом в index.php
строка foo/bar
,
Теперь вы можете разбивать строку, принимать с ней некоторые решения и выполнять различные действия с различными значениями.
Других решений пока нет …