Вопрос о переводе RazorCMS (razorcms.co.uk) переписывает правило, но я думаю, что ответ может быть общим..htacces (x2) to nginx rewrite - различные правила в подкаталоге (RazorCMS)
У меня есть два файла .htacces. Сначала находится в основном каталоге (/). Я перевел:
RewriteRule ^(.*)$ index.php?path=$1 [L,QSA]
в
location/{ try_files $uri $uri/ @rewrite; }
location @rewrite { rewrite ^/(.*)$ /index.php?path=$1; }
Там нет проблем с этим.
Второй файл .htacces находится в подкаталоге (/ rars). Содержимое внутри:
RewriteRule ^login/u/(.*)/p/(.*)$ index.php?login=1&u=$1&p=$2 [L,QSA]
RewriteRule ^login index.php?login=1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?path=$1 [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L,QSA]
Я попытался перевести его на различные правила:
location /login { rewrite ^/login/u/(.*)/p/(.*)$ /index.php?login=1&u=$1&p=$2 break; }
location /login { rewrite ^/login /index.php?login=1 break; }
location /rars { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?path=$1; } }
... но она не работает.
Как перевести правила .htaccess в Nginx, если второй файл .htaccess находится в подкаталоге? Можете ли вы указать мне в правильном направлении?
Спасибо. Это было полезно. Я изменил конфигурацию на: 'location/login { rewrite ^/login/u /(.*)/ p /(.*)$ /rars/index.php?login=1&u=$1&p=$2 break; rewrite ^/login $ /rars/index.php?login=1 break; ) location/rars {rewrite ^/rars /(.*)$ /rars/index.php?path=$1 last;} ' ... и он работает, но если я перехожу в/login вместо выполнения /rars/index.php?login=1 nginx отправляет мне файл «login» с php-кодом внутри. Все еще ищет ошибку в конфиге. –