SEO の観点からは、同じリンクが含まれていてtrailing slash
も、含まれていないリンクとは異なります。常に 1 つのスキーマ (追跡リンクまたは非追跡リンク) を使用することを強くお勧めします。
どちらが優れているかはさまざまですが、最も重要なのは、「間違った」URL から正しい URL への 301 リダイレクトを行うことです。「複数の / にまたがる動的部分」を使用すると、Play で非常に簡単に実現できます。
個人的には、un-trailed バージョンの方が好みです。おそらく、Play で実装するのは単純な行をいくつか書くようなものだからです。ルート ファイルの最初のどこかにこのルールを追加します (スラッシュを保持します。これは、スパニング グループの次のスラッシュとは見なされず、後続の URL を簡単に照合できるため重要です)。
GET /*path/ controllers.Application.untrail(path: String)
then you can just make a redirect in the controller - to the param, so it will be without the slash at the end:
Java
public static Result untrail(String path) {
return movedPermanently("/" + path);
}
Scala
def untrail(path: String) = Action {
MovedPermanently("/" + path)
}
Until now, all routes ending with the slash will be redirected to the un-trailed version. Easy :)
Of course it's highly recommended to use reverse router for generating correct URL's - to minimalize redundant redirects. Also if you're hardcoding the URL somewhere (ie. in some JS or in external application) it's also better to write correct ones instead converting them every time. If you're planning to publish some public API make a note in documentation, which pattern does your application prefer, so developers will be warned and (maybe) will prepare correct calls.
What's more - it most important for GET
routes as they are a subject to manipulation from the client's side. While using POST
, PUT
, DELETE
and others you don't need (or rather, you should't) to care about redirects as they can not be changed by the user and in that way you need to remember which way you choose. In case of wrong call ie. for POST, just return a 404 error - so the developer of the 3-rd part application will be obligated to use correct endings.