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 の一致が使用されます。」