Часть URL, переданная как переменная в строке запроса, неверно включает в себя строку запроса - PullRequest
0 голосов
/ 05 октября 2010

Я в процессе перемещения сайта на другой сервер и столкнулся с проблемой.

Сайт использует .htaccess для перенаправления на index.php, чтобы index.php мог использовать $ _SERVER['REQUEST_URI'] для загрузки любой вызываемой страницы ... Однако я не могу найти, где на старом сервере есть правила .htaccess ... поэтому я делаю это самостоятельно.

Правила .htacess Iиспользуются:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /index.php/?$1 [L,QSA]

URL-адрес newsiteurl.com/racintv/video_view?channel_id=2

и распечатывая параметры на странице index.php, я получаю

Array ([page] => racintv / video_view? Channel_id = 2)

Он должен загрузить страницу video_view и передать channel_id (который загружает список воспроизведения видео).Это не тот случай, так как он думает, что загружаемая страница на самом деле / ​​video_view? Channel_id = 2

На старом сайте я распечатываю параметры на странице index.php, которую он печатает

Array ([page] => racintv / video_view)

и корректно передает? Channel_id = 2 при правильной загрузке видео

Чего мне не хватает в моем .httacessчто бы правильно передать? channel_id = 2?

Вот код PHP, который анализирует URI

$path_info = trim(substr($_SERVER['REQUEST_URI'],1)) ;
$var_array = explode('/',$path_info);
$num_vars = sizeof($var_array);
if ($num_vars==1 or !($var_array[1])) {// in the form of '/foo' or '/foo/'
  if ($var_array[0] && ! strstr($var_array[0],'index')) {
    $var_array[1] = 'index'; // use index as the default page
    $num_vars = 2;
  }
}
if ($num_vars >= 2) { // in the form of '/foo1/foo2[/foo3 ...]'
  $tmp_array = explode('.',$var_array[1]);
  $var_array[1] = $tmp_array[0];
  $page = $var_array[0] .'/'.$var_array[1];
  $vars['page'] = $page;
  $q_str = '';
  for ($i=2;$i<$num_vars;$i++) {
    $key = $var_array[$i];
    $value = $var_array[++$i];
    if ($key && $value) {
      $vars[$key] = $value;
      $q_str .= "$key=$value&";
      $$key=$value;
    }
  }
}

// конец анализа дружественного URL для поисковой системы

1 Ответ

0 голосов
/ 05 октября 2010

Параметр страницы отсутствует:

RewriteRule ^(.+)$ /index.php/?page=$1 [L,QSA]
...