2

ファイルが配置されているディレクトリとは異なるディレクトリにあるファイルを試行するtry_filesディレクティブを作成しました。つまり、アクセスwww.example.com/home/mainするとファイルが試行されます/var/www/main/home/main.php。動作しますが、ページにアクセスすると、PHPソースコードのみが表示され、処理されたページは表示されません。これが私の指示です:

location ~ /home/ {
   index main.php
   try_files /main$uri.php @404;
   location \.php {
       fastcgi_pass php_server;
       include fastcgi_params;
   }
}

PHPソースを表示するだけでなく、ページを処理する方法についてのアイデアはありますか?

追加情報の編集:次のような場所ディレクティブを作成してみました

location ~ /main/(.*)\.php {
       fastcgi_pass php_server;
       include fastcgi_params;
}

しかし、これも機能せず、ページにはソースコードのみが表示されます。

4

2 に答える 2

2

もちろんfastcgi_pass、あなたの/home/場所にないので、ソースが表示されます。

これを試してください:

location /home/ {
   try_files /main$uri.php @static;
   fastcgi_pass php_server;
   include fastcgi_params;
}

location @static { }
于 2013-02-21T15:40:35.547 に答える
-1

try_files編集: 実際には、以下は間違っています。ファイルがディレクティブの他の場所に見つからない場合、最後のパラメーターは常にリダイレクトとして使用されます。この例では、.php ファイルをヒットしていますが、処理されてい@404ないため、ヒットしていませんでした。ただし、@404例が存在しない場合は、ファイルの検索に失敗すると、とにかく爆発します。

ファイルが見つからない場合、最後のパラメーターへの内部リダイレクトが呼び出されます [...] 最後のパラメーターはフォールバック URI であり、存在する必要があります。存在しない場合、内部エラーが発生します。

ソース: http://wiki.nginx.org/HttpCoreModule#try_files

ディレクティブの@404最後にある は、fastcgi を使用する php ディレクティブではなく、ディレクティブtry_filesによって解析される php ファイルを送信します。location @404

@404または簡単な操作をドロップしてみてください:try_files $uri /main$uri.php;

于 2013-02-21T15:17:38.367 に答える