[Решено]Помогите! Не понимаю, почему происходит переадресация на главную.

zey_ser

Новичок
На странице с записями(/news/) отображается часть статей(10штук) и существует навигация. При клике по желаемой странице(/news/2 и т.д.) открывается содержимое Главной страницы, при этом сохраняется урл типа(/news/2 ...) В каталоге /news/ лежит .htaccess с вот таким содержимым:
PHP:
AddDefaultCharset windows-1251
AddCharset windows-1251 *
    <IfModule mod_charset.c>
        CharsetSourceEnc windows-1251
        CharsetDefault windows-1251
    </IfModule>


IndexIgnore */*


RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/?i=$1 [L]
В файле index.php этого каталога первой строчкой ставил die("Exit");
И в случае перехода по ссылке /news/ имел "Exit", в случаях /news/2 и т.д. получал опять таки Главную.
Стоит php.5.3.29. Локально перенес сайт на свой ПК(стоит LAMP с php 5.4) навигация работает, хоть и на странице куча ошибок сыпется. Подскажите куда смотреть!
 

AnrDaemon

Продвинутый новичок
Ну, вы не привели ни строчки PHP кода. Мне просто интересно стало.
 

zey_ser

Новичок
Ну, вы не привели ни строчки PHP кода. Мне просто интересно стало.
Вот index из htaccess. Привожу прям как есть
PHP:
<?
die("Exit");
// ini_set('display_errors', '0');
$ct_title = 'Âñå íîâîñòè';

$pg = "/news/";

include_once($_SERVER['DOCUMENT_ROOT'].'/configuration.php');

$u = explode ("/", $_GET['i']);
$q = array();
while (list ($x,$y) = each ($u)):
  $a = preg_replace("/[^A-Za-z0-9_\-]/", "", $y);
  if ($a!="") :
    $q[]=$a;
  endif;
endwhile;

$a=sizeof($q);

$id=0;

@mysql_connect(_MYSQLHOST, _USERBASE, _PASSBASE) or die("Íå ìîæåì ïîäêëþ÷èòüñÿ ê ñåðâåðó MySQL...");
@mysql_select_db(_DATABASE) or die("Íå ìîæåì âûáðàòü áàçó äàííûõ...");

if ($a==0) :
  $i = $q[0];
  $id = (int)$q[0];
  include 'all.php';
else :

      $id = (int)$q[0];
      if(strlen($id)==strlen($q[0])):
        // Ïàãèíàöèÿ êàòàëîãà
        $i = $q[0];
        $id = (int)$q[0];
        include 'all.php';
        break;
      else :
        $i = $q[0];
        $result = mysql_query("SELECT COUNT(*) FROM pages WHERE type='2' AND url='$i'");
        list ($amount) = mysql_fetch_row($result);
        if ($amount>0):
          include 'page.php';
        else :
          header("Location: /");
          exit;
        endif;
      endif;

endif;
?>
 

fixxxer

К.О.
Партнер клуба
Конструкция
PHP:
while (list ($x,$y) = each ($u)):
намекает, что так учат в материалах по PHP 3.
 

zey_ser

Новичок
можешь объяснить каждую строку кода, что она делает?
начни с первой
После этой команды ничего выполнятся не будет. Таким образом я хотел отсечь все что ниже и при вводе /news/1 получить "Exit". Тогда я бы мог опускать ниже по коду. Все остальное досталось в наследство.
 

Semen

Семён
ну напиши в корне в index.php в начале
Код:
echo 'index root';exit;
у тебя похоже вызывается этот файл
 

Semen

Семён
в корне в .htaccess добавь
Код:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
 
Сверху