web-dev-qa-db-fra.com

NGINX - Rewrite le fichier .js.php en .js

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).

  1. Est-ce possible?
  2. Est-ce une bonne méthode ayant une telle réécriture?
  3. Le fait d’avoir mal la chaîne 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.

2
fiskolin

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:

  1. Est-ce possible?

Oui, mais "l'inverse" est probablement ce que vous voulez vraiment faire. (?)

  1. Est-ce une bonne méthode ayant une telle réécriture?

C'est bon. Vraisemblablement, vous avez besoin de mélanger PHP et JavaScript?

  1. Le fait d’avoir mal la chaîne de requête ?c=21 à l’emplacement du fichier (à remplir à partir du fichier PHP avec l’attribut c 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.

4
MrWhite