0

try_files ディレクティブがどのように機能するかを理解するのに苦労しています。インデックス ファイル (http://domain.com/) が使用されている場合、この構成は期待どおりに機能します。

X-Fcgi-Script-Name  /main_apps/domain.com/index.php
X-Script-Filename   /var/www/main_apps/domain.com/index.php

ただし、PHP スクリプト (index.php またはその他) を指定すると、try_files は期待どおりにファイルを検索しますが、変数を見てください。

X-Fcgi-Script-Name  /index.php
X-Script-Filename   /var/www/index.php

私の質問は次のとおりです: try_files ディレクティブによって選択されたディレクトリを見つけるにはどうすればよいですか?

使用されたサーバー構成:

server {
    server_name  ~^(?P<domain>.+)$;
    root         /var/www;
    autoindex    off;
    index        index.php;


    try_files   /main_apps/$domain$uri/ /partners/$domain$uri/ =404;

    more_set_headers   "X-Script-Filename: $request_filename";
    more_set_headers   "X-Fcgi-Script-Name: $fastcgi_script_name";

    # Pass PHP scripts to PHP-FPM
    location ~ \.php$ {
        fastcgi_param  SCRIPT_FILENAME    $request_filename;
        include        php_fpm_params;
    }
}

: 私が使用する Nginx は、サードパーティ モジュールHeadersMoreでコンパイルされています。

4

1 に答える 1

0

ただし、PHPスクリプト(index.phpまたはその他)を指定すると、try_filesは期待どおりにファイルを見つけます

あなたはここで間違っています。この場合、リクエストはlocation ~ \.php$どこのtry_filesによって処理されません。

ところで、server_name ~^(?P<domain>.+)$;やり過ぎです。$hostvariableを使用する必要があります。

于 2012-07-17T14:10:54.017 に答える