📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 08/12/14 в 18:28 |
Скрипт по get параметру отдаёт страницы. Если параметр взят с потолка, то скрипту соотвественно надо отдать 404ю, например:
Код: | if (нихуя) {
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
die(file_get_contents('/404.html'));
} |
1) Только предположим, что в апаче или htaccess уже есть настройка
ErrorDocument 404 /404_new.html
Программисту данный пример не понравится, так как есть дубли кода (путь к дизайну 404 страницы). Можно ли как-то на php отдавать вместе с заголовком дефолтную серверную 404 страницу в браузер сёрферу, чтоб не настраивать отдельно дизайн страницы в php и на сервере?
2) Корректно ли у меня в примере вариант хедера для fast-cgi пихать в одну кучу с апачевским?
|
|
|
|
+ +
WP-Master
С нами с 17.01.13
Сообщения: 1922
Рейтинг: 1123
|
Добавлено: 08/12/14 в 18:49 |
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
Так коректней, нет редирект 404 не выйдет.
|
|
|
|
📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 09/12/14 в 14:59 |
Спасибо за совет.
А есть какя-то идея отдавать саму страницу\дизайн 404 в варианте, который настроен на сервере?
|
|
|
|
💀💀💀
С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728
|
Добавлено: 09/12/14 в 16:03 |
отдавать любую страницу с заголовком 404. т.е. можешь сам генерить страничку с указанным заголовком, если нет контента.
|
|
|
|
📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 09/12/14 в 17:49 |
Хотелось бы отдавать ту, которая настроена в апачевском конфиге или в htaccess, дапбы дизайн страниц саовпадал.
|
|
|
|
С нами с 18.10.02
Сообщения: 4165
Рейтинг: 3365
|
Добавлено: 09/12/14 в 20:29 |
Ну так создай переменную окружения, значением которой будет путь к нужному файлу, и ее уже используй в апаче и пхп.
|
|
|
|
💀💀💀
С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728
|
Добавлено: 09/12/14 в 20:30 |
так в .хтаксес отдавай свою 404
|
|
|
|
📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 09/12/14 в 20:44 |
Ailk: Как тогда не меняя кода в php отдать в скриптом ту же самую http://mysite.com/404.html ?
Предположим я поменял URL к 404.html или установил скрипт на другой домен, на другой сервер...
|
|
|
|
💀💀💀
С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728
|
Добавлено: 09/12/14 в 21:19 |
никак, только вручную задавать переменную в конфиге апача, как мика сказал. Или через хтакцесс.
|
|
|
|
С нами с 22.05.04
Сообщения: 268
Рейтинг: 251
|
Добавлено: 10/12/14 в 01:25 |
пути как правило как относительны так и абсолютны и всегда можно вычислить нужный,
ну и в хардкорном программинге нет слова нельзя
Код: [развернуть] | $default_404=$_SERVER["DOCUMENT_ROOT"]."/404.html";
$default_htaccess=$_SERVER["DOCUMENT_ROOT"]."/.htaccess";
function get_404()
{
global $default_404, $default_htaccess;
if(file_exists($default_htaccess))
{
if(preg_match("/^ErrorDocument\s+404(.*?)$/smi",file_get_contents($default_htaccess),$ar)) {return $_SERVER["DOCUMENT_ROOT"].trim($ar[1]);}
}
return $default_404;
}
print(get_404()); |
подобные рутины можно юзать рантаймом, можно закешить найденное вместе с датой проверки и периодически проверять или же обновлять по триггерам, тем самым получая самонастраивающуюся систему подстраивающуюся под хтаксесс в случае смены дефолтных значений
|
|
Нестандартные задачи. Кастом программинг на ПХП. Оптимизация стороннего кода. Недорого, недешево.
|
0
|
|
|
С нами с 17.03.12
Сообщения: 335
Рейтинг: 790
|
Добавлено: 10/12/14 в 02:21 |
Не надо так делать
die(file_get_contents('/404.html'));
file_get_contents($default_htaccess)
Вы сервер до смерти затрахаете этим, если часто будет это выполняться. А выполняться оно будет часто, потому что 404 ошибок обычно много.
|
|
|
|
С нами с 22.05.04
Сообщения: 268
Рейтинг: 251
|
Добавлено: 10/12/14 в 04:07 |
Sargas писал: |
Не надо так делать
Код: [развернуть] | die(file_get_contents('/404.html'));
file_get_contents($default_htaccess)
|
Вы сервер до смерти затрахаете этим, если часто будет это выполняться. А выполняться оно будет часто, потому что 404 ошибок обычно много.
|
хз что там у ТС с die(file_get_contents('/404.html')); (ибо readfile() адекватнее),
но что касается моего коммента - специально выделил
rx писал: |
подобные рутины можно юзать рантаймом, можно закешить найденное вместе с датой проверки и периодически проверять или же обновлять по триггерам, тем самым получая самонастраивающуюся систему подстраивающуюся под хтаксесс в случае смены дефолтных значений
|
в тру хардкорных случаях после первого запуска полученное значение кидается в мемкеш или еще куда душе угодно или банально перезаписывается общий конфиг файл, и апдейтится по триггерам (событийные, кнопка "настроить", контроль спайдером смены размера/даты или банально резапуск по крону, етц)
и моя практика показывает что если сервак кончается от пары вызовов на чтение - это как правило не пара вызовов на чтение виноваты
|
|
Нестандартные задачи. Кастом программинг на ПХП. Оптимизация стороннего кода. Недорого, недешево.
|
0
|
|
|
💀💀💀
С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728
|
Добавлено: 10/12/14 в 06:46 |
Ха! Смелое решение Но что если 404 файл прописан не в верхнем акцессе, а прямо в конфиге апача для всех серверов? Или того хуже в качестве сервера стоит нгинкс голый или лайтхттпд?
|
|
|
|
С нами с 22.05.04
Сообщения: 268
Рейтинг: 251
|
Добавлено: 10/12/14 в 09:39 |
Ailk писал: | Но что если 404 файл прописан не в верхнем акцессе, а прямо в конфиге апача для всех серверов? |
указать по умолчанию на поиск другой файл/симлинк или сделать htaccess каталогом выше. но задачи как на фри хосте что-то изобрести - это обычно из другой оперы
Ailk писал: | Или того хуже в качестве сервера стоит нгинкс голый или лайтхттпд? |
у любого из них есть конфигурационный файл
та же подстрока error_page 404 для нгинкса или server.error-handler-404 для лайтхттпд
зы - нет универсального эффективного решения ВСЕХ проблем сразу. но если есть конкретная задача - всегда есть ее эффективное решение
|
|
Нестандартные задачи. Кастом программинг на ПХП. Оптимизация стороннего кода. Недорого, недешево.
|
0
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 10/12/14 в 11:31 |
Не понимаю, нафига себе пудрить мозги до такой степени. Взяли и решили "ошибку у нас отдает /404.php". В дальнейшем на него все и заворачивается. И в нем хоть редирект влупите по желанию.
S_Flash писал: | Предположим я поменял URL к 404.html или установил скрипт на другой домен, на другой сервер... |
/404.php внутри домена будет всегда иметь один и тот же путь DOCUMENT_ROOT/404.php
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
0
|
|
|
📈sflash.biz
С нами с 03.11.12
Сообщения: 3913
Рейтинг: 4447
|
Добавлено: 10/12/14 в 21:45 |
Stek:
Какой итоговый код на php будет корректным для Apache и fast-cgi, если принять как правило, что страница дизайна ошибки /404.php?
|
|
|
|
продаю базы адалт кейвордов
С нами с 09.11.02
Сообщения: 9045
Рейтинг: 3772
|
Добавлено: 10/12/14 в 22:04 |
Вот так нормально работает
----------------------------
header("HTTP/1.1 404 Not Found");
virtual("/404.php");
----------------------------
отдается страница из корня с хедером Not Found
|
|
сдам подпись, стучите в личку
|
0
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 10/12/14 в 22:17 |
S_Flash писал: | Какой итоговый код на php будет корректным для Apache и fast-cgi, если принять как правило, что страница дизайна ошибки /404.php? |
Код: | <?php
require_once($_SERVER['DOCUMENT_ROOT'].'/404.php');
die; |
В все заголовки и прочее уже в 404.php пихать. В таком случае если решите вдруг отдавать 302 или 200, то поменять придется только в одном месте.
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
0
|
|
|