Wie die URL des Schrägstrich in einer Rails-Anwendung entfernen? (In einer SEO-Ansicht)
-
06-07-2019 - |
Frage
Um Inhalt Doppelarbeit zu vermeiden, möchte ich die Seiten meiner Website vermeiden zugänglich ist durch mehrere URLs (mit oder ohne Slash am Ende).
Derzeit sind die URLs
catalog/product/1
und
catalog/product/1/
führen zu der gleichen Seite. Mein Ziel ist es, dass die zweite URL zur ersten (Umleitung 301, natürlich) umleiten. Keine Seite von meiner Seite sollte mit einem Schrägstrich, mit Ausnahme meiner Homepage / offensichtlich zugänglich sein.
Was ist der beste Weg, dies zu tun? Mit .htaccess oder routes.rb? Wie würden Sie das tun?
NB: Ich bin mit Ruby-Entwicklung auf Rails 1.2.3
Lösung
Ich würde verwenden Apache mod_rewrite . Versuchen Sie folgendes:
RewriteEngine on
RewriteRule ^(.+)/$ $1 [R=301,L]
EDIT: Added R = 301. Ich vermute, es ist ein SEO Vorteil, dass im Vergleich zu den Standard-302.
Andere Tipps
könnten Sie verwenden http://github.com/jtrupiano/rack-rewrite url Umschreiben von Unterschieden in Web-Servern, unabhängig zu sein.
Beispiel für die Verwendung in Rails-Anwendung:
config.gem 'rack-rewrite', '~> 1.0.0'
require 'rack/rewrite'
config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do
r301 %r{(.+)/$}, '$1'
end
Sie können dies tun, um den Rack-Rewrite gem verwenden. Hier ist, wie:
Sie können nicht eine Umleitung mit routes.rb bekommen. Ich nehme an, Sie könnten einen Controller bauen, die nur Umleitungen gibt und alle URLs in ‚/‘, um es Endpunkt, aber das scheint unnötig kompliziert. Stattdessen habe ich mod_rewrite in einer .htaccess-Datei verwenden würde: RewriteRule ^(.+)/$ $1 [R=301,L]