J'ai eu une réécriture de file.js?c=123
vers file.js.php?c=123
mais les paramètres de requête dégradaient mon évaluation SEO. En fait, certains CDN de proxy ne mettent pas en cache les paramètres de requête.
server {
location ~ \startscript.js$ {
rewrite (.*) $1.php last;
}
}
SO, je voudrais réécrire file.123.js
à file.js.php?c=123
. Est-ce possible?
location ~ \startscript.js$ {
Dans regex, le \s
au début de votre uri est une classe de caractères abrégée qui correspond à un seul space (ou "caractère d'espacement"). Il est donc peu probable que cela corresponde à quoi que ce soit. Cependant, vous devez échapper la barre oblique inversée avant le numéro de fichier.
Je suppose que "fichier" dans file.js
pourrait être n'importe quel fichier , ce n'est pas toujours "startscript"?
Essayez plutôt ce qui suit (UPDATED):
server {
location ~ \.js$ {
rewrite (.+)\.(\d+)\.js$ $1.js.php?c=$2 last;
}
}
Cependant, comme je l’ai mentionné dans les commentaires, cela ne fait aucune différence en ce qui concerne le référencement ( moteurs de recherche gérer correctement la chaîne de requête - l’a toujours). Dans le passé, il s’agissait peut-être d’un problème utilisabilité , car certains serveurs proxy ne mettaient pas en cache la chaîne de requête. Ainsi, les utilisateurs n’auraient peut-être pas vu le contenu correct (s’ils étaient en retard). un proxy qui se comportait de cette façon) - mais ceci est historique autant que je sache.
Voir aussi ma réponse à la question suivante:
... cela génère une erreur 404, par exemple:
domain.com/startscript.82b4527379bd2540f79f532950c7b96b.js
L'exemple ci-dessus correspond spécifiquement aux chiffres uniquement (comme dans votre exemple initial). Ce que vous avez là ressemble à une valeur hexadécimale de 32 caractères (hachage?). Essayez plutôt ce qui suit (UPDATED):
rewrite "(.+)\.([\da-f]{32})\.js$" $1.js.php?c=$2 last;
Ou utilisez le plus générique \w+
, comme @devnull le suggère dans les commentaires, pour faire correspondre tout caractère "Word" (c'est-à-dire. 0-9
, a-z
, A-Z
et _
). Bien qu'avec regex, il est généralement conseillé d'être aussi spécifique que possible, donc si c'est toujours un hexagone de 32 caractères, faites correspondre un hexagone de 32 caractères.