web-dev-qa-db-ja.com

NGINX-.js.phpファイルを.jsに書き換える

動的に作成されたファイルstart.js.php?c=21があり、その拡張子を(クエリパラメーターでstart.jsに)書き換えたいと思います。

  1. それは可能ですか?
  2. それはそのような書き換えを持つ良い方法ですか?
  3. クエリ文字列?c=21がファイルの場所にあるのは間違っていますか(PHPファイルから特定のc属性を入力するため)?

私はリライトを作成しようとしています:

server {
    location ~ \.js.php$ {
        rewrite ^(.*)$ $1.js last;
    }
}

これは404エラーコードを返しています。

2
fiskolin

基になるファイル名がscript.js.phpの場合、rewrite this to script.js-は404になりますので意味がありません。

ただし、投稿したディレクティブはscript.js.phpscript.js.php.jsに書き換えるため、異なる理由で404になります。

おそらく、あなたはscript.js?c=21にリンクし、内部的にrewrite thisをscript.js.php?c=21(基礎となるファイル)にリンクして、ユーザーから.phpファイル拡張子を隠したいと思うでしょう。その場合は、代わりに次のようなものを試してください。

server {
    location ~ \.js$ {
        rewrite (.*) $1.php last;
    }
}

特定のクエリに回答するには:

  1. それは可能ですか?

はい、しかし「逆」はおそらくあなたが本当にやりたいことです。 (?)

  1. それはそのような書き換えを持つ良い方法ですか?

大丈夫です。おそらく、PHPとJavaScriptを混在させる必要がありますか?

  1. クエリ文字列?c=21がファイルの場所にあるのは間違っていますか(PHPファイルから特定のc属性を入力するため)?

これには必ずしも何か問題があるとは思わない。一部のキャッシュプロキシはクエリ文字列を無視する可能性があることを覚えておいてくださいが、それはほとんど歴史的なものだと思います。

4
MrWhite