2017-11-28 3 views
0

これはしばらくの間Google検索してきましたが、解決策を見つけることができません。Nginx - .phpを含むすべてのリクエストを単一のPHPスクリプトにリダイレクトしますか?

現時点では、単一のindex.phpファイルにファイルの拡張子に関係なくすべての要求を送信するようにNginxで設定ファイルを設定しています。ただし、.phpで終わるリクエストは無視され、存在しない場合は404がスローされます。そうでない場合は404がスローされます。

index.phpファイルに.phpリクエストを送信するようにNginxを設定するにはどうすればいいですか?非PHPファイルだけでなく、すべてのファイルリクエストを処理するために使用することができますか?

私の設定ファイルは現在、次のようになります。

server { 
     listen 80; 
     listen 443; 

     ssl on; 
     ssl_certificate /somecrt.crt; 
     ssl_certificate_key /somekey.key; 

     root /sites/; 
     index index.php; 

     server_name somesite.net; 

     access_log /sites/logs/access.log; 
     error_log /sites/logs/error.log; 

     location ~ /\. { deny all; } 

     location/{ 
       # First attempt to serve request as file, then 
       # as directory then fall back to index.php 
       try_files $uri $uri/ /index.php?$args; 
       # Uncomment to enable naxsi on this location 
       # include /etc/nginx/naxsi.rules 
     } 

     location ~ \.php$ { 
       try_files $uri /index.php?$args =404; 
       fastcgi_pass unix:/var/run/php5-fpm.sock; 
       # fastcgi_pass 127.0.0.1:9000; 
       fastcgi_index index.php; 
       include fastcgi_params; 
     } 

} 
+0

は 'try_files $ uriの/index.php?$args = 404から' $のuri'を削除するようにしてください; '(PHPファイル用)、$ URIあなたのPHPファイルであり、ファイルが存在する場合はindex.phpの前にアクセスしようとします。 –

+0

'index.php'ファイルでリソースファイルを使用していますか?私はなぜドキュメントルート内に他の '.php'ファイルがあるのか​​理解できていません。 –

答えて

0

いくつかのより多くのグーグル「nginx: Map single static URL to a PHP fileは」私は解決策を考え出す助けた後。したがって、新しい設定は次のようになります。

server { 
    listen 80; 
    listen 443; 

    ssl on; 
    ssl_certificate /somecrt.crt; 
    ssl_certificate_key /somekey.key; 

    root /sites/; 
    index index.php; 

    server_name somesite.net; 

    access_log /sites/logs/access.log; 
    error_log /sites/logs/error.log; 

    location ~ /\. { deny all; } 

    location/{ 
      include fastcgi_params; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_param SCRIPT_FILENAME $document_root/index.php; 

    } 

} 

この設定では、すべてのリクエストが1つのindex.phpに送信されます。

もちろん、Nginxサーバーのパフォーマンスに影響を与えるイメージファイルなどの静的ファイルも含まれます。その場合、特定の種類の要求を除外する場合は、別の場所ブロックを追加することをお勧めします。例えば

、のJPGやGIFを除外する:

location ~ \.(jpg|gif) { 
      try_files $uri =404; 
    }