axllent/silverstripe-trailing-slash

Ensure that a single trailing slash is always added to the URL

Installs: 151 579

Dependents: 7

Suggesters: 0

Security: 0

Stars: 11

Watchers: 4

Forks: 4

Open Issues: 0

Type:silverstripe-vendormodule

2.2.7 2023-06-07 04:23 UTC

This package is auto-updated.

Last update: 2024-10-07 07:30:23 UTC


README

Ensure that a single trailing slash is always added to the URL.

Only GET and HEAD requests are redirected, excluding URLS that contain a file extension or query parameter. Detected ajax requests are also ignored.

Examples

  • example.com/contact is redirected to example.com/contact/
  • example.com/contact// is redirected to example.com/contact/
  • example.com/contact?test is not redirected
  • example.com/contact.html is not redirected

Requirements

  • Silverstripe ^4.0 || ^ 5.0

For Silverstripe 3, please refer to the Silverstripe3 branch.

Installation and configuration

composer require axllent/silverstripe-trailing-slash
  • Run ?flush=1

Configuration

By default it will ignore any admin/ & dev/ URLs, as well as all ajax requests. It also only acts on $_GET requests as not to interfere with any posted data, and ignores any URL containing an extension (eg: /contact.html) or query parameter.

You can create additional "ignore_paths" by creating a yaml config (eg: app/_config/trailing-slash.yml):

Axllent\TrailingSlash\Middleware\TrailingSlashRedirector:
  ignore_paths:
    - 'events'
    - 'my/other/path'

These paths are relative to the base URL (/), so events will not match /page/events, but will match /events-2020.

Please note that paths do not typically contain a trailing slash unless it is only underlying URLs you wish to redirect. Wildcards etc are not supported in the syntax.