位置 / {

位置 / {

私はvBulletinフォーラムのnginx書き換えルールを整理しようとしていますが、同じサイト内にいくつかの変更と追加ソフトウェアがあり、それが問題を引き起こしています。私はすべて正常に動作していますが、nginx は悪である私は心配しており、代わりにこれらのいくつかのルールを try_files に変換してみたいと思います。

現在、

  1. 静的画像やファイルが SEO モデレーターに渡されないようにするルール (例: .gif、.ico、.css)

  2. サブフォルダ mobiquo (別名: tapatalk プラグイン) のルール。これを機能させるには、ディレクトリ全体を書き換えから除外する必要がありました。

  3. ファイルが存在しない場合。それがどれほど重要なのかはわかりませんが、良いアイデアのように思えます。おそらく、SEO モッドの作業を軽減するためでしょう。

明らかに危険な If ブロック形式の nginx 書き換えルール:

これを /forum/ ブロックの上に置いたのは、優先させたかったからです。もしこれが不適切に行われた場合は、ぜひ知らせてください。

    location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
            # Some basic cache-control for static files to be sent to the browser
            expires max;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    }

    location /forum/ {

            try_files $uri $uri/ /forum/dbseo.php?$args;

            if ($request_uri ~* ^/forum/mobiquo) {
                    break;
            }

            if (-f $request_filename) {
            expires 30d;
                    break;
            }

            if ($request_filename ~ "\.php$" ) {
                    rewrite ^(/forum/.*)$ /forum/dbseo.php last;
            }


            if (!-e $request_filename) {
                    rewrite ^/forum/(.*)$ /forum/dbseo.php last;
            }

    }

終わり

検索中にテンプレートを見つけたので、それを適応させようとしましたが、正規表現を理解していないため失敗しました :)

位置 / {

            # if you're just using wordpress and don't want extra rewrites
            # then replace the word @rewrites with /index.php

try_files $uri $uri/ /index.php;

}

場所 @rewrites {

            # Can put some of your own rewrite rules in here
            # for example rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
            # If nothing matches we'll just send it to /index.php

try_files $uri $uri/ /forum/dbseo.php?$args;

^ /index.php を最後に書き換えます。

最後に ^(/.php)$ /forum/dbseo.php を書き換えます。

}

答え1

質問を整理するようにしてください。特に、コードを提供する代わりに叫んでいる最後の部分です。

質問の冒頭で提供された構成に基づいて、次のようになりました。

location /forum/ {
    index dbseo.php; # You obviously wish to send everything erroneous/inexistent to dbseo.php, any index.php file would suffer the regex location below
    try_files $uri $uri/ /forum/dbseo.php?$args; # Any inexistent file/directory will be handled over to /forum/dbseo.php

    location ^~ /forum/dbseo.php { # Avoids matching the regex location below (performance)
    }

    location ^~ /forum/mobiquo { # Avoids matching any other rules
    }

    location ~* \.php$ {
        try_files /forum/dbseo.php =404;
        # Be careful here, try to secure your location since the regex can still be manipulated for arbitrary code execution
    }
}

ネストされた場所は、競合する可能性のある場所ブロックを分離するのに適しています。正規表現の場所は順番に評価されることに注意してください。したがって、場所ブロックの順序が影響を与えること (Apache 構成と同様に混乱を招く) を回避するには、常に正規表現の場所をプレフィックスで囲み、複数の場所が連続しないようにします。

以下について学ぶことができますlocationドキュメント ページで修飾子を確認してください。

他にも細かい点はあるかもしれませんが、私の例には必要な基本情報がすべて含まれています。それを理解して、ニーズに合わせて改善するのはあなたの仕事です。:o)

関連情報