Назад | Перейти на главную страницу

nginx rewrite: [Emerg] неизвестная переменная «0»

1.) Правило Apache:

RewriteRule ^(.*)/(.*).htm$ /inner.php?Categories=$0&Title=$1 [L,QSA]

2.) После конвертации в nginx:

rewrite ^/(.*)/(.*).htm$ /inner.php?Categories=$0&Title=$1 break;

Вопрос: когда пользователь получает доступ к этой странице http://example.com/category.htm и попытался щелкнуть внутри страниц, значит, он должен быть перенаправлен на http://example.com/category/innerpagetitle.htm/

Как добиться в nginx?

Я предпочитаю реализовать их, используя location блоки.

location ~ ^/(.+)/(.+)\.htm$ {
    try_files $uri $uri/ /inner.php?Categories=$1&Title=$2;
}

Я также изменился с .* (0 совпадений или больше) на .+ (1 совпадение или более), чтобы избежать возможного неопределенного поведения сценария PHP.

В nginx переменные возвращаются начиная с $1 так что это должно работать:

rewrite ^/(.*)/(.*).htm$ /inner.php?Categories=$1&Title=$2 break;