Склейка с помощью php category/index.php и category/

Тема в разделе "PHP", создана пользователем bob, 21 мар 2013.

Модераторы: latteo
  1. bob

    bob

    Регистр.:
    30 авг 2011
    Сообщения:
    155
    Симпатии:
    45
    Добрый день! помогите пожалуйста: нужен скриптик вставляющийся в шаблон сайта и осуществляющий 301 редирект:
    с category/index.php на category/
    .htaccess не подходит
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.037
    Симпатии:
    2.042
    Вот тебе кусок кода на все случаи жизни:
    PHP:
    if ( $conf['allow_alt_url'] == 'yes'$url '/index.html'
    else 
    $url '/index.php';

    if (
    $_SERVER["REQUEST_URI"] != $url) {
        
    header ('HTTP/1.1 301 Moved Permanently');
        
    header('location: '.$url);
        die(
    '<a href="' $url '">Верная ссылка на страницу</a>');
    }
     
  3. bob

    bob

    Регистр.:
    30 авг 2011
    Сообщения:
    155
    Симпатии:
    45
    Мне надо было уточнить: нужен скрипт, так сказать, в общем виде - для интернет магазина.
    есть куча категорий, которые заканчиваются на index.php. И каждый час появляются новые.
    Т.е. если url xxx/index.php, то должно перекидывать на xxx/ , если yyy/index.php на yyy/
    алгоритм примерно такой:
    1. проверять наличие в конце index.php
    2. если есть, отделять то что до index.php в REQUEST_URI
    3. заносить ту часть REQUEST_URI которая до index.php в переменную
    4. подставлять в функцию header переменную
    к сожалению владею PHP на очень низком уровне, поэтому и прошу помочь
     
  4. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.037
    Симпатии:
    2.042
    Ну так генерируйте верную ссылку в $url и всё...
    В моём случае генерация идёт так:
    PHP:
    if ( $conf['allow_alt_url'] == 'yes'$url '/index.html'
    else 
    $url '/index.php';
    Т.е. если ЧПУ включено, код перенаправляет на index.html, иначе - на index.php

    Подставляйте свои переменные в $url - всё будет работать.
     
  5. bob

    bob

    Регистр.:
    30 авг 2011
    Сообщения:
    155
    Симпатии:
    45
    т.к. не понимал что такое $conf['allow_alt_url'] вбил это в гугл - гугл показал темы про DLE. У меня не DLE - у меня битрикс.

    на всякий случай вставил в шаблон Ваш код
    весь сайт начал ссылается на bamboleo.com.ua/index.php
     
  6. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.037
    Симпатии:
    2.042
    $conf['allow_alt_url'] - это переменная из конфига, отвечающая за ЧПУ. Я уже это пояснил...

    Ещё раз, сам код редиректа:
    PHP:
    if ($_SERVER["REQUEST_URI"] != $url) {
        
    header ('HTTP/1.1 301 Moved Permanently');
        
    header('location: '.$url);
        die(
    '<a href="' $url '">Верная ссылка на страницу</a>');
    }
    В качестве парамера он принимает $url, который У МЕНЯ генерируется таким образом, как я описал. Конечно, в Вашем случае генерировать его нужно другим способом...

    К примеру, можно порезать index.php:
    PHP:
    $url explode('index.php'$_SERVER["REQUEST_URI");
    $url $url[0];
    И вставлять этот код нужно в файл, который генерирует категории, а не на весь сайт...
     
    bob нравится это.
  7. bob

    bob

    Регистр.:
    30 авг 2011
    Сообщения:
    155
    Симпатии:
    45
    скрипт настроил
    Код:
    <?php
    $requri = $_SERVER['REQUEST_URI'];
      if(strstr($requri, 'index.php') !== false )
    {
      $url = explode('index.php', $_SERVER['REQUEST_URI']);
    $url = $url[0];
    if ($_SERVER["REQUEST_URI"] != $url) {
        header ('HTTP/1.1 301 Moved Permanently');
        header('location: '.$url);
        die('<a href="' . $url . '">Верная ссылка на страницу</a>');
    }}
    ?>
    - проблема осталась. (ставил на другие сайты - работает)
    похоже что дело в nginx(первый раз с ним имею дело).
    UPD:
    if ( $request_uri ~ "/index.php?" ) {
    rewrite ^(.*)/index.php$ $1/ permanent;
    }