0

conf ファイルに次の内容があります。

server {
    listen 80;
    server_name a.mydomain.com;

    location /f/ {
        alias /var/www/sites/mydomain/photos/;
        expires 1y;
    }

    location ~ \.(php|html)$ {
        include php.conf;
    }

    location / {
        return 301 http://www.mydomain.com$request_uri;
    }
}

php.conf の場所

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
fastcgi_param  PHP_VALUE  "include_path=.:/usr/share/pear:/var/www/sites/mydomain/conf";
include /etc/nginx/fastcgi_params;
fastcgi_index index.php;
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;

私を困惑させているのは、私の最終的な場所(「場所/」)ブロックが、私が望んでいることを正確に実行することです。/f/ get で始まるもの以外のすべての要求は、親の www ドメインにリダイレクトされます。

それは素晴らしいことです、それは私が欲しいものです。

しかし、ドキュメントにはそうではないと記載されています。私が持っている正規表現phpブロックは、最後の「/」ブロックよりも前に一致する(そして優先される)必要があると言われていますか?

そうじゃない?

「場所ディレクティブがチェックされる順序は次のとおりです。

  • クエリに正確に一致する = プレフィックスを持つディレクティブ (リテラル文字列)。見つかった場合、検索は停止します。

  • 従来の文字列を使用した残りのすべてのディレクティブ。この一致に ^~ プレフィックスが使用されている場合、検索は停止します。

  • 構成ファイルで定義されている順序での正規表現。

  • #3 が一致した場合は、その結果が使用されます。それ以外の場合は、#2 の一致が使用されます。」

4

0 に答える 0