Регулярное расположение nginx и try_files

Пытаюсь настроить унаследованный nginx для выполнения моих ставок, но не могу этого сделать.

У меня есть типичная установка nginx Wordpress:

location / {
 try_files $uri $uri/ /index.php?q=$uri&$args;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 location ~ \.php$ {
   try_files $uri =404;
   fastcgi_pass unix:/var/run/php5-fpm.sock;
   fastcgi_index index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include fastcgi_params;
}

Все идет нормально. Но мне также нужно проверить старые URL-адреса из предыдущей установки, которые следуют этому шаблону:

^(ninos|familia|hogar|mujeres|hombres)(-[a-z-]+){1,3}\.php

И направьте их в index.php с его неповрежденными параметрами, поскольку WP будет обрабатывать их с правильным перенаправлением 301 на новый URL.

Как мне это сделать? Должен ли я вложить другое место внутри location ~ \.php$? Или иметь другой отдельный блок местоположения снаружи, копируя конфигурацию location ~ \.php$? (Минус "try_files $uri =404"; который, я думаю, все сломает).

Большое спасибо и привет. Nginx новичок. Пробовал документы, но оставил меня в замешательстве...

1 ответ

Решение

Закончилось исправление, добавив дополнительный блок местоположения, как это:

location ~ "(ninos|familia|hogar|mujeres|hombres)(-[a-z-]+){1,3}\.php$" {
    try_files $uri /index.php?$args;
 }

Надеюсь, я больше ничего не сломаю...:P

Обновить:

После @tero-kilkanen полезного предложения я заменил вышеупомянутое на:

location ~ "(ninos|familia|hogar|mujeres|hombres)(-[a-z-]+){1,3}\.php$" {
    rewrite ^ /index.php?$args last;
 }
Другие вопросы по тегам