SilverStripe

SilverStripe はNGINX上で楽しく動作する最新のPHPベースのCMSフレームワークです。

rewriteルール内でどのようなエラーも修正しようとする組み込みのフェイルセーフがあります。 rewrite rules. まず、SSはURLをどう処理するかを定義するために.htaccess に依存します。次に、rewriteが失敗した場合、index.php ファイルは内部変数を設定し、処理のためにコア/sapphire/main.php ファイルをincludeしようとするでしょう。

注意

これらの指示は、あなたがPHPをPHP FastCGIの例 あるいは 127.0.0.1:9000 上でlistenしている PHP-FPM として設定したものを使っていると仮定します。環境で必要であれば、fastcgi_paramsに適切な変更をしてください。設定のサンプルは、SilverStripe 4.1+ で有効です。前のバージョンについては、SilverStripe ドキュメントを見てください。

Recipe

全てのSilverStripeコールを制御する基本的なrewriteは、URIと任意のGET変数の$document_root/framework/main.phpへの渡しを伴います。

  1. SilverStripeインストレーションのroot内の.htaccess ファイルとindex.phpを削除します(確実にそうしてください)
  2. 以下に似た設定を適用します:
server {
    include mime.types;
    default_type  application/octet-stream;
    client_max_body_size 0; # Manage this in php.ini (upload_max_filesize & post_max_size)
    listen 80;
    root /path/to/ss/folder/public;
    server_name example.com www.example.com;

    # Defend against SS-2015-013 -- http://www.silverstripe.org/software/download/security-releases/ss-2015-013
    if ($http_x_forwarded_host) {
        return 400;
    }

    location / {
        try_files $uri /index.php?$query_string;
    }

    error_page 404 /assets/error-404.html;
    error_page 500 /assets/error-500.html;

    # See caveats
    error_page 502 /assets/error-500.html;
    error_page 503 /assets/error-500.html;

    location ^~ /assets/ {
        sendfile on;
        try_files $uri =404;
    }

    location /index.php {
        fastcgi_buffer_size 32k;
        fastcgi_busy_buffers_size 64k;
        fastcgi_buffers 4 32k;
        fastcgi_keep_conn on;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
inserted by FC2 system