axllent / silverstripe-trailing-slash
Ensure that a single trailing slash is always added to the URL
Installs: 176 073
Dependents: 6
Suggesters: 0
Security: 0
Stars: 11
Watchers: 2
Forks: 4
Open Issues: 0
Type:silverstripe-vendormodule
pkg:composer/axllent/silverstripe-trailing-slash
Requires
- silverstripe/framework: ^4.0 || ^5.0 || ^6.0
 
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.
Note:
This module is no longer actively developed since the majority of the functionality is handled natively within Silverstripe 5 & 6. To enable trailing slashes without the need for this module, simply add the following to your yaml configuration:
SilverStripe\Control\Controller:
  add_trailing_slash: true
This module has been kept alive for the list of depended modules.
Examples
example.com/contactis redirected toexample.com/contact/example.com/contact//is redirected toexample.com/contact/example.com/contact?testis not redirectedexample.com/contact.htmlis not redirected
Requirements
- Silverstripe ^4.0 || ^ 5.0 || ^6.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.