2012-05-21 8 views
4

Я использую форумы IPB. Мне удалось использовать дружественные URL-адреса с изменениями конфигурации сервера nginx. Однако мне нужно перенаправить URL моего старого форума в файл php-файла redirector, чтобы получить текущий URL-адрес темы (или форума, участника и т. Д.). Например: если URL-адрес равен /forum/index.php?board=23, я перенаправляю redirector.php.Перенаправление, если параметр запроса существует на nginx

Это моя текущая конфигурация, чтобы иметь возможность использовать дружественные URL-адрес на ИПБЕ

location /forum { 
     try_files $uri $uri/ /forum/index.php; 
     rewrite^/forum/index.php? last; 
    } 

Когда я если заявление внутри этого местоположение блока, как в следующем, я не могу получить запрос параметра «доски» вставляю.

location /forum { 
     if ($arg_board != "") { 
      rewrite^/redirector.php?q=$arg_board break; 
     } 
     try_files $uri $uri/ /forum/index.php; 
     rewrite^/forum/index.php? last; 
    } 

Что здесь отсутствует?

ответ

3

Ваша проблема связана с использованием разрыва вместо последнего. Из документации:

http://wiki.nginx.org/HttpRewriteModule#rewrite

последний - завершает обработку текущих директив перезаписи и перезапускает процесс (включая перезапись) с поиском матча на URI из всех доступных мест.

break - завершает обработку текущих директив переписывания и обработку без перезаписи продолжается только в блоке текущего местоположения только.

Поскольку вы не определяете обработчик для/redirector в блоке местоположения/форума, ваш if (..) {rewrite} не делает то, что вы хотите. Сделайте это сломать последнее, чтобы переписать может вызвать соответствующий блок местоположения.

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