Index · Правила · Поиск· Группы · Регистрация · Личные сообщения· Вход

Список разделов Веб-строительство и интернет-проекты
 
 
 

Раздел: Веб-строительство и интернет-проекты Корректен ли такой редирект? 

Создана: 31 Октября 2012 Срд 0:39:16.
Раздел: "Веб-строительство и интернет-проекты"
Сообщений в теме: 19, просмотров: 19090

На страницу: Назад  1, 2  Вперёд
  1. 31 Октября 2012 Срд 0:39:16
    В htaccess прописал следующий редирект



    ErrorDocument 404 /404.shtml

    Вопрос Вопрос Вопрос

    Раньше правило было такое
    RewriteRule ^(.*)$ /index.php?query=$1 [L]

    Но возвращался 200 ответ и все время ошибка с headers вылазила, щас корректно вылазит заглушка и 404 ошибко

    P.S. И еще. запрещать ли в robots.txt 404 заглушку, у меня с нее стоит ссылка на главную (без принудительного редиректа, просто ссыль) или позволить индексировать эту страницу?
  2. lorien


    Завсегдатай


    Более 10 лет на форумеМуж.
    31 Октября 2012 Срд 1:46:29
    > P.S. И еще. запрещать ли в robots.txt 404 заглушку, у меня с нее стоит ссылка на главную (без принудительного редиректа, просто ссыль) или позволить индексировать эту страницу?

    Поисковики не индексируют страницы, которые выдаются с кодом 404
  3. 31 Октября 2012 Срд 1:56:58
    вы правда все это руками делаете? Офигеть
  4. 31 Октября 2012 Срд 1:57:20
    lorien писал : > P.S. И еще. запрещать ли в robots.txt 404 заглушку, у меня с нее стоит ссылка на главную (без принудительного редиректа, просто ссыль) или позволить индексировать эту страницу?

    Поисковики не индексируют страницы, которые выдаются с кодом 404


    Я имел ввиду саму страницу заглушку 404.shtml к примеру у меня называется

    Грустно :-(

    P.S. Печаль но вновь прописанное правило начало возвращать 404 для всех страниц. вернул назад. теперь по-прежнему вылазит 200 код для несуществующих страниц
  5. 31 Октября 2012 Срд 2:03:41
    spectrum писал(а) : вы правда все это руками делаете? Офигеть


    Намекаете что я жопой делаю или хотите сказать что у вас этот процесс автоматизироваН? Смайлик :-)
  6. 31 Октября 2012 Срд 2:04:52
    Vision писал :
    Намекаете что я жопой делаю или хотите сказать что у вас этот процесс автоматизироваН? Смайлик :-)


    мы фреймворки использем. они сами сливают всякий дрек в 404 Норм
  7. 31 Октября 2012 Срд 2:07:29
    spectrum писал(а) :
    Vision писал ... :
    Намекаете что я жопой делаю или хотите сказать что у вас этот процесс автоматизироваН? Смайлик :-)


    мы фреймворки использем. они сами сливают всякий дрек в 404 Норм


    Тут самописная CMS, проблема в том что страницы левые пустые генерятся если мы вводим любой адрес, но по сути их в базе нет, а значит 404 должна выдаваться, а она не выдается Грустно :-(
  8. 31 Октября 2012 Срд 2:18:07
    Vision писал :
    Тут самописная CMS, проблема в том что страницы левые пустые генерятся если мы вводим любой адрес, но по сути их в базе нет, а значит 404 должна выдаваться, а она не выдается Грустно :-(


    насколько я понимаю это как раз в php и высмеивается чаще всего Грустно :-( что велосипеды не работают и чтобы починить нужно огород городить.
  9. 31 Октября 2012 Срд 6:42:04
    Vision писал :
    Тут самописная CMS, проблема в том что страницы левые пустые генерятся если мы вводим любой адрес, но по сути их в базе нет, а значит 404 должна выдаваться, а она не выдается Грустно :-(

    Как я понял вам не в .htaccess'е править нужно, а в самописной cms. Это же она генерирует страницы, даже если их нет и возвращает на верх Apache. А тот, получив данные, ставит '200 OK' в код состояния.
  10. 31 Октября 2012 Срд 13:22:19
    Monk Albino писал :
    Vision писал ... :
    Тут самописная CMS, проблема в том что страницы левые пустые генерятся если мы вводим любой адрес, но по сути их в базе нет, а значит 404 должна выдаваться, а она не выдается Грустно :-(

    Как я понял вам не в .htaccess'е править нужно, а в самописной cms. Это же она генерирует страницы, даже если их нет и возвращает на верх Apache. А тот, получив данные, ставит '200 OK' в код состояния.


    Да так и есть, знать бы еще что править Смайлик :-)
  11. 31 Октября 2012 Срд 14:55:36
    Vision писал :Да так и есть, знать бы еще что править Смайлик :-)

    А ну это уже совсем другой вопрос: Подскажите/помогите/посоветуйте специалиста, который бы покопался в коде и внёс бы правки?
  12. 31 Октября 2012 Срд 17:08:04
    Monk Albino писал :
    Vision писал ... :Да так и есть, знать бы еще что править Смайлик :-)

    А ну это уже совсем другой вопрос: Подскажите/помогите/посоветуйте специалиста, который бы покопался в коде и внёс бы правки?


    Нашел ошибку в классе, который правили мои знакомые криворукие млин.


    Цитата:

    <?php

    class Feedback {

    function Generate() {

    global $config;

    $output = $this -> Form();
    return $output;

    }

    function Form($vars = array()) {
    ob_start();
    ?>



    Убрав пустую строку в начале файла класса перед открывающим тегом <? php стал возвращаться 404 ответ. Поскольку php знаю на уровне букв, объяснить это не могу.

    До этого возвращалось предупреждение Warning: Cannot modify header information - headers already sent by (output started at Z:\home\old\www\class\class.feedback.php:2) in Z:\home\old\www\index.php on line 44

    и сообщение Ошибка 404: страница не найдена.

    Но код все равно 200 шел
  13. 31 Октября 2012 Срд 17:38:54
    Как я понял проблема решена и 404ый возвращается на пустых страницах, да?
    Пустая строка влияла из-за того, что веб-сервер должен получить вначале от скрипта header-заголовки, а потом уже данные. 404 ответ - это header-заголовок, а пустая строка - это уже какие-то данные. Собственно предупреждение об этом и говорит.
  14. 31 Октября 2012 Срд 17:52:22
    Monk Albino писал : Как я понял проблема решена и 404ый возвращается на пустых страницах, да?
    Пустая строка влияла из-за того, что веб-сервер должен получить вначале от скрипта header-заголовки, а потом уже данные. 404 ответ - это header-заголовок, а пустая строка - это уже какие-то данные. Собственно предупреждение об этом и говорит.


    Решилась да несовсем.

    То есть для адресов [внешняя ссылка]
    решилась,

    Но есть еще подгаталоги вида [внешняя ссылка]
    и если там набрать ересь какую-нибудь типа
    [внешняя ссылка]

    он возвращает нормальную страницу [внешняя ссылка] и 200 код

    Для каталогов у меня написано правило
    #rules for catalog
    RewriteCond %{REQUEST_URI} ^/catalog.*$
    RewriteRule ^catalog\.htm$ /catalog [R=301,L]

    Надо какое-нибудь строгое правило или условия где-то задать чтобы возвращались только страницы из базы, а несуществующие не генерировались и не возвращались.


    Вот код, генерящий страницы
    Цитата:function Href() {
    if ($this -> property["parent_id"] == 0) return "/".$this -> property["name"];
    else {
    $tmp = new Object;
    $tmp -> Init($this -> property["parent_id"]);
    return $tmp -> Href()."/".$this -> property["name"];
    }
    }

    Parent_id = 0 это странице в корне, в таблице есть еще 6 и 7 это подкаталоги catalog1 и catalog2, может кто подскажет условие, код Ну и вот, стало быть

    Полный листинг:
    <?php

    class Object {
    var $obejct_id = 0;
    var $property = array();

    function Init($object_id) {
    $result = MySQL::DBQuery("select * from `prefix_object` where `object_id`=".$object_id);
    if ($row = MySQL::FetchArray($result)) {
    $this -> InitFromRow($row);
    return true;
    } else return false;
    }

    function InitFromRow($row) {
    $this -> object_id = $row["object_id"];
    $this -> property = $row;
    }

    function InitByName($name, $parent_id = 0) {
    $result = MySQL::DBQuery("select * from `prefix_object` where `name`=\"".$name."\" and `parent_id`=".$parent_id);
    if ($row = MySQL::FetchArray($result)) {
    $this -> InitFromRow($row);
    return true;
    } else return false;
    }

    function Href() {
    if ($this -> property["parent_id"] == 0) return "/".$this -> property["name"];
    else {
    $tmp = new Object;
    $tmp -> Init($this -> property["parent_id"]);
    return $tmp -> Href()."/".$this -> property["name"];
    }
    }

    function GetPath($linkto = false) {
    if($linkto) $output = "<a href='".$this -> Href()."'>".$this -> property["title"]."</a>";
    else $output = $this -> property["title"];

    if ($this -> property["parent_id"]) {
    $p = new Object;
    $p -> Init($this -> property["parent_id"]);
    return $p -> GetPath(true)." / ".$output;
    }
    else return $output;
    }

    }

    ?>

    Структура таблицы:

    object_id parent_id name
    ________________________
    26 6 wemanhospital.htm
    6 0 articles1
    8 7 basic.htm
    7 0 catalog2
  15. 31 Октября 2012 Срд 19:00:19
    Вот смотрю я в ваше сообщение и ничего не понимаю :)
На страницу: Назад  1, 2  Вперёд