@Genri_Rus

Что может блокировать динамический ЧПУ?

Доброго времени суток!

Есть сайт торговой площадки, соответственно у него есть поиск товаров

Проблема возникла в динамическом ЧПУ, а именно вот такого вот поискового запроса: example.ru/search - /тут, что искал пользователь

На тестовом варианте все работает нормально, создал .htaccess, index.php, search.php и все передается в строку браузера
А на сайте все удаляется и остается: example.ru/search/ без доп. строки
Делал в таком варианте:

В файле .htaccess

RewriteEngine On
RewriteRule ^search/(.*)/?$ search.php?str=$1

В index.php подключаются template (tpl) шаблоны

В main.tpl есть форма поиска:

<form class="my-class" role="search" action="http://example.ru/search/" method="post">
        <input type="text" name="str" placeholder="Поиск" value="">
        <button type="submit">Поиск</button>
</form>


А в search.php вот:

if (isset($_POST["str"])) { 
  setcookie("str", $_POST["str"], time() + 9999999); 
  $_COOKIE["str"] = $_POST["str"];
  header("Location: " . $_POST["str"] . '/');
}


Вот так все отлично работает и редирект на тестовом варианте отлично отрабатывает, а вот такой вариант на самом сайте нет

Слышал, что редиректу могут мешать всякие ob_start();, почему у меня не передается в строку то, что вводит пользователь ?

Может ли быть какая-та php функция очистки флешей или это все таки ошибка в ob_start();, просто в коде их там много?
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 1
AronTito
@AronTito
разработчик-любитель web приложений и сайтов.
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        // сюда-бы проверку через фильтра $_POST["str"] прогнать...
        setcookie("str", $_POST["str"], time() + 9999999);
        $_COOKIE["str"] = $_POST["str"];
        header("Location:/" . $_POST["str"] . '/');
}

А это вверху кода
header('Content-type:text/html; charset=UTF-8');
ob_start();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы