動的に作成されたファイルstart.js.php?c=21
があり、その拡張子を(クエリパラメーターでstart.js
に)書き換えたいと思います。
?c=21
がファイルの場所にあるのは間違っていますか(PHPファイルから特定のc
属性を入力するため)?私はリライトを作成しようとしています:
server {
location ~ \.js.php$ {
rewrite ^(.*)$ $1.js last;
}
}
これは404エラーコードを返しています。
基になるファイル名がscript.js.php
の場合、rewrite this to script.js
-は404になりますので意味がありません。
ただし、投稿したディレクティブはscript.js.php
をscript.js.php.js
に書き換えるため、異なる理由で404になります。
おそらく、あなたはscript.js?c=21
にリンクし、内部的にrewrite thisをscript.js.php?c=21
(基礎となるファイル)にリンクして、ユーザーから.php
ファイル拡張子を隠したいと思うでしょう。その場合は、代わりに次のようなものを試してください。
server {
location ~ \.js$ {
rewrite (.*) $1.php last;
}
}
特定のクエリに回答するには:
- それは可能ですか?
はい、しかし「逆」はおそらくあなたが本当にやりたいことです。 (?)
- それはそのような書き換えを持つ良い方法ですか?
大丈夫です。おそらく、PHPとJavaScriptを混在させる必要がありますか?
- クエリ文字列
?c=21
がファイルの場所にあるのは間違っていますか(PHPファイルから特定のc
属性を入力するため)?
これには必ずしも何か問題があるとは思わない。一部のキャッシュプロキシはクエリ文字列を無視する可能性があることを覚えておいてくださいが、それはほとんど歴史的なものだと思います。