Предистория. Достался мне в наследство один проект, писавшийся горе-криворукими-велосепидистами 100 лет назад. Чтобы сделать красивые урлы использовался свой файл 404.php, т.е. если файла не существует, запрос перенаправляется на 404.php, там уже регуляркой разбирается REQUEST_URI и подключается нужная дериктория. Ну вот так хард-кор программисты делали красивые урлы раньше.
Проблема: мне нужно отправить $_POST данные на такой крассивы урл, но почему-то в 404 файле не видны $_POST перемнные. Массив пустой. Может быть кто-нибудь знает, как сделать так, чтобы супер-глобальный массив $_POST был виден в 404.php файле?
Спустя 4 минуты, 45 секунд (11.10.2012 - 11:09) killer8080 написал(а):
Причем здесь ЧПУ к $_POST?
Спустя 6 минут, 23 секунды (11.10.2012 - 11:15) forza написал(а):
Ну смотрите. Есть ссылка
http://domain.name/dir/controller/action/param.html
Такого файла на сервере НЕ СУЩЕСТВУЕТ. Сервер настроен так, что если не существует файла вызывается файл 404.php и дальше происходит вся кухня, которую я описал в предистории.
НО! если отправить $_POST запрос на эту ссылку, то в 404.php массив $_POST будет пустой.
http://domain.name/dir/controller/action/param.html
Такого файла на сервере НЕ СУЩЕСТВУЕТ. Сервер настроен так, что если не существует файла вызывается файл 404.php и дальше происходит вся кухня, которую я описал в предистории.
НО! если отправить $_POST запрос на эту ссылку, то в 404.php массив $_POST будет пустой.
Спустя 10 минут, 49 секунд (11.10.2012 - 11:26) n58oo написал(а):
зачем отправлять $_POST на несуществующую ссылку? в 404.php его нет, потому что идет перенаправление запроса
Спустя 8 минут, 44 секунды (11.10.2012 - 11:35) forza написал(а):
Ну да, все верно. Писался проект гениями велосипедов.. чтобы сделать красивую ссылку нужна 404 : (
Просто с $_ГЕТ перемнными все нормально. Странно, думал сервер должен посылать скрипту-обработчику данные которые пришли не на существующий УРЛ независимо от того $_ГЕТ это или $_ПОСТ..
Просто с $_ГЕТ перемнными все нормально. Странно, думал сервер должен посылать скрипту-обработчику данные которые пришли не на существующий УРЛ независимо от того $_ГЕТ это или $_ПОСТ..
Спустя 1 час, 3 минуты, 37 секунд (11.10.2012 - 12:39) dron4ik написал(а):
а взять 404 переименовать в индекс, и модреврайтом попросить давать путь в переменную роут с него?
Спустя 12 минут, 7 секунд (11.10.2012 - 12:51) forza написал(а):
Да ничего в этой старой системе нельзя изменять и трогать.. Есть 1 еррор документ и все. Вобщем вердикт таков.
Если задать свой еррор-документ, и отправить $_ПОСТ запрос с данными на несуществующий урл, то сервер сделает редирект на еррор-документ и не отправит ему эти пост данные, которые были переданны на несуществующий урл.
Если задать свой еррор-документ, и отправить $_ПОСТ запрос с данными на несуществующий урл, то сервер сделает редирект на еррор-документ и не отправит ему эти пост данные, которые были переданны на несуществующий урл.
Спустя 5 минут, 59 секунд (11.10.2012 - 12:57) killer8080 написал(а):
404.php прописан как ErrorDocumen в .htaccess?
А реврайты как прописаны? Так?
А реврайты как прописаны? Так?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?route=$0 [L]
Спустя 1 час, 5 минут, 39 секунд (11.10.2012 - 14:02) forza написал(а):
Нет, сервер nginx и надо у админа спрашивать, где и что там прописано -)
Спустя 1 минута, 58 секунд (11.10.2012 - 14:04) forza написал(а):
П.С. но он ничего не будет там менять.. Да проблему решил тем, что для обработчиков генерируются отдельные ссылки.
Напр: domain.name/dir/index.php/controller/action
Напр: domain.name/dir/index.php/controller/action
Спустя 1 час, 23 минуты, 26 секунд (11.10.2012 - 15:28) killer8080 написал(а):
forza
это я к тому, что в чпу, обычно все несуществующие запросы перенаправляются внутренним реврайтом, на index.php, и настройка ErrorDocument вебсервера, вообще не участвует в обработке 404 ошибки. (если конечно там не прописана тонна правил, индивидуально под каждый вид запроса )
это я к тому, что в чпу, обычно все несуществующие запросы перенаправляются внутренним реврайтом, на index.php, и настройка ErrorDocument вебсервера, вообще не участвует в обработке 404 ошибки. (если конечно там не прописана тонна правил, индивидуально под каждый вид запроса )
_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио