J'ai un fichier créé dynamiquement start.js.php?c=21
et je voudrais réécrire son extension (en start.js
, avec les paramètres de requête).
?c=21
à l’emplacement du fichier (à remplir à partir du fichier PHP avec l’attribut c
donné)?J'essaie de créer une réécriture avec:
server {
location ~ \.js.php$ {
rewrite ^(.*)$ $1.js last;
}
}
Cela renvoie 404 code d'erreur.
Si le nom de fichier sous-jacent est script.js.php
, cela n'a aucun sens de réécrire ceci en script.js
- car cela donnerait 404.
Cependant, les directives que vous avez publiées sembleraient aboutir à un 404 pour une raison différente, car elles réécrivent script.js.php
dans script.js.php.js
.
Vraisemblablement, vous voulez créer un lien vers script.js?c=21
et en interne réécrire ceci vers script.js.php?c=21
(le fichier sous-jacent), masquant ainsi l'extension de fichier .php
aux utilisateurs. Dans ce cas, essayez plutôt quelque chose comme ce qui suit:
server {
location ~ \.js$ {
rewrite (.*) $1.php last;
}
}
Pour répondre à vos questions spécifiques:
- Est-ce possible?
Oui, mais "l'inverse" est probablement ce que vous voulez vraiment faire. (?)
- Est-ce une bonne méthode ayant une telle réécriture?
C'est bon. Vraisemblablement, vous avez besoin de mélanger PHP et JavaScript?
- Le fait d’avoir mal la chaîne de requête
?c=21
à l’emplacement du fichier (à remplir à partir du fichier PHP avec l’attributc
donné)?
Je ne pense pas qu'il y ait forcément quelque chose qui cloche N'oubliez pas que certains mandataires de mise en cache peuvent ignorer la chaîne de requête, mais je pense que c'est principalement historique.