![]() |
|
|
![]()
|
|
| comhunt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 20.3.2009 Репутация: нет Всего: нет |
В корне сайта лежит файл .htaccess
Внутри него задана страница для ошибки - 404 ErrorDocument 404 /sitemap.html Делаю два запроса на заведомо несуществующую страницу: 1. http://www.site.ru/cgi-bin/index.cgi?page=weqweq123123qweqwe 2. http://www.site.ru/weqweq123123qweqwe.html В случае (1) выдает заголовок: HTTP/1.1 404 Not Found Server: nginx/0.7.65 Date: Fri, 26 Feb 2010 12:47:16 GMT Content-Type: text/html; charset=windows-1251 Connection: keep-alive И переход на страницу sitemap.html НЕ срабатывает В случае (2) выдает заголовок: HTTP/1.1 404 Not Found Server: nginx/0.7.65 Date: Fri, 26 Feb 2010 12:40:40 GMT Content-Type: text/html; charset=windows-1251 Connection: keep-alive Last-Modified: Fri, 26 Feb 2010 12:00:01 GMT ETag: "d13193-c3c2-4807fa39cb240" Accept-Ranges: bytes Content-Length: 50114 И переход на страницу sitemap.html срабатывает Что я не так делаю при формировании заголовка в случае (1) что не происходит редирект на sitemap.html Внутри каталога /cgi-bin/ файла .htaccess нет ? |
|||
|
||||
| Nigel |
|
|||
|
познаю мир ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 20.11.2007 Репутация: 7 Всего: 19 |
В первом случае вы скриптом посылаете заголовки, во втором сервер, не найдя указанный урл, включает обработчик.
|
|||
|
||||
| comhunt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 20.3.2009 Репутация: нет Всего: нет |
А каким образом можно послать заголовок скриптом чтобы он сначала выдал код 404 а потом сделал редирект?
Каким образом должен выглядеть такой сложный заголовок? print qq(Content-type: text/html; charset=windows-1251\n Status: 404 Not Found\n Status: 301 Moved Permanently\nLocation: www.newsite.ru\n \n ); На сколько я понимаю - такое не сработает? |
|||
|
||||
| Nigel |
|
|||
|
познаю мир ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 20.11.2007 Репутация: 7 Всего: 19 |
Указывая 404, вы можете выводить любой текст на странице. Подключите просто нужный файл.
|
|||
|
||||
| comhunt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 20.3.2009 Репутация: нет Всего: нет |
>Подключите просто нужный файл.
Каким образом можно подключать файл? Средствами .htaccess или как-то еще? Вот эта конструкция внутри .htaccess файла разве не подключает файл ErrorDocument 404 /sitemap.html ? Это сообщение отредактировал(а) comhunt - 2.3.2010, 15:06 |
|||
|
||||
| comhunt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 20.3.2009 Репутация: нет Всего: нет |
Все разобрался...
Это сообщение отредактировал(а) comhunt - 5.3.2010, 00:00 |
|||
|
||||
| 1000000dollars |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 6.10.2007 Репутация: 2 Всего: 8 |
Давайте посмотрим что происходит: 0) апачу приходит запрос на получение документа /cgi-bin/index.cgi для хоста www.site.ru 1) апач прочитал .htaccess и знает, что если документа не найдёт надо отдать клиенту страничку /sitemap.html 2) апач находит /cgi-bin/index.cgi и поэтому отдавать страничку /sitemap.html не должен. 3) апач понимает, что это CGI, поэтому запускает его и тупо (без обработки) отдаёт пользователю всё, что генерируется этим CGI. 4) CGI сказала вернуть клиенту заголовок с кодом 404, что апач и выполняет. Чтобы скрипт показывал страничку /sitemap.html я бы попробовал сделать следующее: внутри CGI вернул заголовок 404 и контент из файла /sitemap.html. |
|||
|
||||
| comhunt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 20.3.2009 Репутация: нет Всего: нет |
Пробую внутри CGI вернуть заголовок
Content-type: text/html; charset=windows-1251\n Status: 404 Not Found\n\n Далее вывожу print "123"; Но браузер показывает страница не доступна. В чем проблема не пойму. Это сообщение отредактировал(а) comhunt - 18.3.2010, 21:04 |
|||
|
||||
| 1000000dollars |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 6.10.2007 Репутация: 2 Всего: 8 |
Только что проверил такой скрипт:
В браузере строчка выводится. Пытаюсь забрать страничку wget'ом:
При этом в логах апача:
То есть апач отдал 404 заголовок и текст, который я захотел. Смотри ошибки в коде CGI: пробелы, переносы строк и так далее... Других идей у меня нет. Удачи! |
||||||
|
|||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |