2015-03-12 2 views
1

У меня возникли проблемы с правилами переписывания nginx .htaccess, и я мог бы действительно использовать некоторую помощь, так как это разрушает весь мой сайт.Невозможно захватить параметры _GET из-за переписывания NGINX

Так что я переписывания мой параметр ?page= _GET к чему-то похожее на это: website.com/page/ и что на самом деле работает, но когда я пытаюсь схватить мою _GET [ «страницы»] параметр возвращает массив с ключом 0 без значения.

Моя .htaccess выглядит следующим образом:

конфигурации Nginx

charset utf-8; 

    location/{ 
     if (!-e $request_filename){ 
      rewrite ^(.*)$ /index.php?page=$1 break; 
     } 
    } 

Я надеюсь, что кто-то может мне помочь!

+0

Во-первых, у nginx нет '.htaccess'. Во-вторых, показать полную конфигурацию nginx –

ответ

1

попробовать что-то вроде этого:

$url = $_SERVER['REQUEST_URI']; 
$parsed = parse_url($url); 
$path = $parsed['path']; 
$path_parts = explode('/', $path); 
$desired_part = $path_parts[1]; 

Это принимает ваши сегменты URI и взрывает их и помещает их в массив. Тогда, если ваш example.com/index.php?page=1 URL становится example.com/page/1 вы можете вытащить одну из массива $ path_parts т.е.

$desired_output = $path_parts[3]; // Would return 1 in the 'example.com/page/1' example above. 

Когда ваш URL отформатирован так вы не можете захватить параметры $ _GET, потому что они больше не существуют.

Предлагаю var_dumping некоторые из перечисленных выше переменных и немного поиграть с ним.

+0

Это работает! Я действительно смог получить параметры _GET с перезаписываемыми apache2, поэтому я был очень смущен, когда он не работал для nginx. Спасибо, что показал мне этот подход! :) –

Смежные вопросы