2017-02-03 4 views
1

NGINXとPHP7のURL書き換えの問題がFastCGIで有効になっています。.php拡張子を無効にしますが、.phpなしのファイルをPHPファイルとして実行します。

要件は次のとおりです。

オリジナルURL:http://example.com/somename1.php
応答:http://example.com/somename1
応答::http://example.comまたはhttp://example.com/
応答::それは実行されることがhttp://example.com/somename1.php

オリジナルURLが実行されますそれは404エラー

オリジナルURLがスローされますhttp://example.com/index.php

私はこれらのURLは上記の必要条件を満たしていません。

  1. How to remove both .php and .html extensions from url using NGINX?
  2. remove .php from url with rewrite rule
  3. remove .php extension from url in nginx

サンプル "デフォルト" ファイルの内容は以下のとおりです。

server { 
    listen 80 default_server; 
    listen [::]:80 default_server; 
    root /var/www/html; 
    index index.php index.html index.htm index.nginx-debian.html; 
    server_name _; 
    location/{ 
     try_files $uri $uri/ =404; 
    } 
    location ~ \.php$ { 
     include snippets/fastcgi-php.conf; 
    } 
    location ~ /\.ht { 
     deny all; 
    } 
} 

問題を手伝ったり、他のページで私が詳細を知ることができますか?

オリジナルURL:http://example.com/somename1.php応答:それは 404エラー

internalディレクティブを使用をスローします

おかげ

答えて

0

は、次の3つの要件があります。詳細は、this documentを参照してください。例えば

location ~ \.php$ { 
    internal; 
    ... 
} 

オリジナルURL:http://example.com/somename1応答:それは達成するための方法、拡張子のPHPの数があります http://example.com/somename1.php

を実行します。ご質問の最初のリンクはtry_files、名前付きの場所、rewriteです。

オリジナルURL:http://example.comまたはhttp://example.com/応答:それは 通常indexディレクティブはあなたのサンプルごとに、この場合に使用されるだろうhttp://example.com/index.php

を実行します。拡張子のPHPの仕組みがこれを台無しにした場合、完全一致の場所のブロックを使用します。

location =/{ 
    rewrite^/index.php last; 
} 

は、より多くのためにthis documentを参照してください。

+0

この回答は不完全であり、同じ問題が発生した方には役に立ちません。将来的にはうまくいかないかもしれないリンクに頼るのではなく、すべての部分の完全な答えをここに示してください。言い換えれば、サーバーブロックは動作しているときにどのように見えるのですか? – Tomas

関連する問題