1

.htaccessnginx構成に変換する必要がある非常に単純なファイルがあります:

RewriteRule ^api$ api.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

私は次のことから始めようとしました:

location / {
    rewrite ^(.*)$ /index.php;
}

しかし、Web ページのベース URL をロードするたびに、ブラウザは index.php ファイルをダウンロードするだけです。私の設定にもこれがあります:

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

しかし、何らかの理由でnginxはまだダウンロードとして渡しています。ここで正しい構成は何ですか?

4

1 に答える 1

1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

最初の 3 つは、nginx での書き換えではなく、try_files で行います (そのディレクティブの詳細については、http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files を参照してください)

location / {
  try_files $uri $uri/ $uri/index.php$args;
}

location = /api {
  rewrite ^ /api.php$args
}
于 2012-08-31T09:29:42.253 に答える