nginx переписать: [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?

2 ответа

Я предпочитаю реализовать это с помощью 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;
Другие вопросы по тегам