htaccess 규칙을 nginx 규칙으로 "변환"하는 방법은 무엇입니까?

htaccess 규칙을 nginx 규칙으로 "변환"하는 방법은 무엇입니까?

이 규칙을 nginx 규칙으로 "변환"하고 싶습니다. 위치 블록이 올바른 장소라고 생각하지만 내 솔루션이 작동하지 않습니다.

Options -Indexes
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f
RewriteRule ^(.*)$ public/$1 [QSA,END]
RewriteCond %{REQUEST_FILENAME} !index\.php
RewriteRule ^(.+)$ index.php?route=$1 [QSA,L]

나는 이것을 시도했다

location / {
  rewrite ^(.*)$ /public/$1;
  rewrite ^(.+)$ /index.php?route=$1 break;
}

답변1

nginx rewrite지시어는 무조건 적용되는 반면, 재작성 규칙에는 많은 조건이 있습니다. 사용try_files 지시어대신에:

location = /index.php {
    # PHP options
}

location / {
    try_files /public$uri /public$uri/ /index.php?route=$uri;
}

관련 정보