Dal punto di vista SEO lo stesso collegamento con trailing slash
è diverso dal collegamento senza di esso. Si consiglia vivamente di utilizzare sempre uno schema (collegamenti trainati o non-trainati).
Sebbene esistano scuole diverse, una delle quali è la più importante è quella di effettuare un reindirizzamento 301 dall'URL "errato" al corretto. Puoi ottenerlo abbastanza facilmente in Play con un 'Dynamic part spanning several /'.
Personalmente preferisco la versione non trascinata, forse perché implementarla nel Play è come scrivere poche righe semplici. Aggiungi ai tuoi percorsi file di questa regola, da qualche parte all'inizio (tenere la barra - è importante in quanto non è considerato come la prossima barra nel spanning-gruppo, e permette di abbinare trainati URL facilmente):
GET /*path/ controllers.Application.untrail(path: String)
allora si può solo fare un reindirizzamento nel controllore - per il parametro, quindi sarà senza la slash alla fine:
Java
public static Result untrail(String path) {
return movedPermanently("/" + path);
}
Scala
Fino ad ora, tutti i percorsi che terminano con la barra verranno reindirizzati alla versione non trascinata. Facile :)
Ovviamente si consiglia vivamente di utilizzare il router inverso per generare URL corretti - per ridurre al minimo i reindirizzamenti ridondanti. Inoltre, se si sta codificando l'URL da qualche parte (ad esempio in alcuni JS o in un'applicazione esterna) è anche meglio scrivere quelli corretti e convertirli ogni volta. Se hai intenzione di pubblicare alcune API pubbliche, fai una nota nella documentazione, quale modello preferisce la tua applicazione, così gli sviluppatori saranno avvisati e (forse) prepareranno le chiamate corrette.
Inoltre, è importantissimo per le route GET
in quanto sono soggette alla manipolazione da parte del cliente. Durante l'utilizzo di POST
, PUT
, DELETE
e altri non è necessario (o piuttosto non dovrebbe) preoccuparsi dei reindirizzamenti in quanto non possono essere modificati dall'utente e in questo modo è necessario ricordare in quale modo si sceglie. In caso di chiamata sbagliata vale a dire. per POST, è sufficiente restituire un errore 404, quindi lo sviluppatore dell'applicazione di terze parti sarà obbligato a utilizzare terminazioni corrette.
risposta molto buona, farò un tentativo ... – opensas
Grazie. E in Scala, questo sembra: def untrail (path: String) = Action {MovedPermanently ("/% s" .format (path))} –
@ChristopherMartin, grazie, ho copiato il tuo campione in risposta – biesior