Nginx経由で実行されているWordPressサイトの特定のディレクトリから静的ファイルを提供する方法


0

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コンテンツのみを提供します。


1
Nginxのロケーションステートメントを使用して、URLの外観に応じてロケーションを定義します。例えばlocation /static { stuff here; }、それからlocation / { stuff here; }
-Kinnectus

@Kinnectus訪問者がexample.com/static/fileに移動する必要はありませんか?私は訪問者がexample.com/fileに移動したいが、私はそれが存在する場合は、静的なディレクトリのコンテンツを提供することにしたい
デイブ

あなたはいくつか持っている/間違った場所に秒。試す:try_files /static$uri $uri $uri/ /index.php?$args;
リチャードスミス

@RichardSmithありがとう。私の質問に最初のスラッシュを含めるのを忘れました。私の設定にそれがありました。後のスラッシュstaticが間違っていたのは正しい。残念ながら、この構成では、訪問者をそこからコンテンツを提供するだけでなく、物理的に/ staticディレクトリにリダイレクトします。
デイブ

1
明らかにlocation ~ \.php$ブロックがありますが、staticフォルダー内のファイルと競合する可能性のある他の正規表現の場所はありますか。
リチャードスミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.