25 lines
515 B
Ruby
25 lines
515 B
Ruby
module Locomotive
|
|
module Middlewares
|
|
class SeoTrailingSlash
|
|
|
|
def initialize(app, opts = {})
|
|
@app = app
|
|
end
|
|
|
|
def call(env)
|
|
path = env['PATH_INFO']
|
|
|
|
if !path.starts_with?("/#{Locomotive.mounted_on}/") && (match = path.match(%r{(.+)/$}))
|
|
response = Rack::Response.new
|
|
response.redirect(match[1], 301) # moved permanently
|
|
response.finish
|
|
response.to_a
|
|
else
|
|
@app.call(env)
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|