Nginxで実行しているWordPressサイトがあります。私の構成では、次のようなロケーションブロックがあります。
location / {
try_files $uri $uri/ /index.php?$args;
}
私がやりたいのは、静的コンテンツで満たされた特別なディレクトリを持つことです。URLが静的ディレクトリ内のファイルと一致する場合、Wordpressのコンテンツの代わりにURLが提供されるようにします。
事前にファイルの名前を知りません。
ロケーションブロックを変更してみました
location / {
try_files /static/$uri /static/$uri/ $uri $uri/ /index.php?$args;
}
これは主に私が望むことを行います(static
ディレクトリが下にある限り$document_root
)が、訪問者が見るURLを書き換えます。できればそれを避けたい。たとえば、https://example.com/catalog.php
へのリダイレクトを避けhttps://example.com/static/catalog.php
ます。訪問者が知らないうちに、Nginxが静的からコンテンツを提供したいだけです。
私は特に明確ではなかったかもしれません。
WordPressのコンテンツはに/srv/www/mysite/html
あり、Nginxの構成はおおよそ次のようになっています。
server {
root /srv/www/mysite/html;
location / {
try_files $uri $uri/ /index.php?$args;
}
}
/home/dave/static
任意のコンテンツを含む別のフォルダがあります。というファイルがあるとしcatalog.html
ます。訪問者がhttps://example.com/catalog.html
にアクセスする場合、コンテンツを配信する必要があります/home/dave/static/catalog.html
。一致する静的ファイルがない場合、WordPressコンテンツにフォールバックしたいと思います。
ここで私が試した他の何かがあります:
server {
root /srv/www/mysite/html;
location / {
root /home/dave/static;
try_files $uri $uri/ @fallback;
}
location @fallback {
try_files $uri $uri/ /index.php?$args;
}
}
この設定は機能しません。静的コンテンツを認識していないようで、WordPressコンテンツのみを提供します。
/
間違った場所に秒。試す:try_files /static$uri $uri $uri/ /index.php?$args;
static
が間違っていたのは正しい。残念ながら、この構成では、訪問者をそこからコンテンツを提供するだけでなく、物理的に/ staticディレクトリにリダイレクトします。
location ~ \.php$
ブロックがありますが、static
フォルダー内のファイルと競合する可能性のある他の正規表現の場所はありますか。
location /static { stuff here; }
、それからlocation / { stuff here; }