Nginx reindirizzamento semplice di prodotti dalla vecchia alla nuova categoria


9

Sto effettuando reindirizzamenti di prodotti dalla vecchia alla nuova categoria.

Sono riuscito a farlo funzionare con la seguente regola:

rewrite ^/old-category/(.*) /new-category/$1;

Ma voglio sapere quando dovrei usare il segno "end line" $ e qual è la differenza con esso o senza di essa nel mio caso. Per esempio:

rewrite ^/old-category/(.*)$ /new-category/$1;

Voglio anche reindirizzare gli utenti se scrivono semplicemente il vecchio nome di categoria (senza prodotti), se devo creare una nuova regola solo per il reindirizzamento di categoria o posso modificare la regola corrente sopra per funzionare in entrambi i casi.

Grazie per le risposte in anticipo.

Risposte:


9

Rispondere alle tue domande in ordine ...

Questo

rewrite ^/old-category/(.*) /new-category/$1;

e questo

rewrite ^/old-category/(.*)$ /new-category/$1;

come scritto sono equivalenti. La .*regola corrisponde a 0 o più di "tutto", quindi $è ridondante / non proprio necessario.

Il $terminatore è utile quando si desidera abbinare stringhe che terminano in un modo specifico , ad esempio

rewrite ^/old-category/(.*)\.php$ /new-category/$1;

per riscrivere solo i file PHP .

Per quanto riguarda la tua seconda domanda, se ho capito bene, vuoi reindirizzare questo

http://example.com/old-category/

a questo

http://example.com/new-category/

Se è così, è già fatto dalla rewriteregola, come .*corrisponde a ZERO o più personaggi.


3
Bella domanda, buona risposta. Tante persone impostano $ per impostazione predefinita (o lo tralasciano per impostazione predefinita) senza pensare a cosa significhi effettivamente. Ogni volta che vedo (. *) $ I rabbrividire. Non l'ho provato, ma in realtà potrebbe essere che tralasciare $ in questo caso potrebbe avere prestazioni leggermente migliori in quanto è un'altra regola che regex deve verificare. Sarebbe interessante avere una risposta a questa domanda: D
Broco
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.