OpenCartのApachehtaccess書き換えルールに相当するものを含むNginx仮想ホスト構成を作成しようとしています。これがオリジナルです:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
私が理解しているように、これは、リクエストがファイルではなく、ディレクトリではなく、上記の拡張子のいずれかを持つファイルが含まれていない場合は、最後の行に従って書き直すことを意味します。
これが私が現在Nginxで使用しているものです:
location / {
# This try_files directive is used to enable SEO-friendly URLs for OpenCart
try_files $uri @opencart;
}
location @opencart {
rewrite ^/(.+)$ /index.php?_route_=$1 last;
}
これは機能しているようですが、これらの特定のファイルのチェックがないのではないかと心配しています。私が見つけたものは、IFを使用せずにその条件を複製する方法を示唆するものはありません。また、条件のこの部分の理由、つまり、これらの特定のファイルが重要である理由についてもわかりません。
私の質問は次のとおりです。
これを行う方法はありますか?つまり、IFを使用せずにそれらのファイルタイプに関する条件と同等のNginxを記述しますか?
Nginxの例の最初のロケーションブロックをtry_files $ uri $ uri/@opencart;($ uri /を追加)に変更する必要があります
助けてくれてありがとう。
その特定のRewriteCond
の目的は、nonexistent静的ファイルの要求がOpenCartに渡されるのを防ぐことです。
別のlocation
でこれを行うことができます。たとえば(頭のてっぺんから離れているので、微調整が必要な場合があります):
location ~ \.(ico|gif|jpg|jpeg|png|js|css)$ {
try_files $uri =404;
}