fsasvari/laravel-trailing-slash

Adds redirection with trailing slash in Laravel.

v2.0.2 2020-04-01 14:23 UTC

README

Adds url formatting and redirection with trailing slash to Laravel 7.x, 6.x and 5.x.

Build For Laravel Latest Stable Version Latest Unstable Version Total Downloads License

Compatibility Chart

Laravel Trailing Slash Laravel PHP
2.x 7.x 7.3+
1.x 6.x 7.2+
0.3.x 5.7-5.8 7.1.3+
0.2.x 5.6 7.1.3+
0.1.x 5.5 7.0.0+

Installation

Step 1: Install package

To get started with Laravel Trailing Slash, use Composer command to add the package to your composer.json project's dependencies:

composer require fsasvari/laravel-trailing-slash

Or add it directly by copying next line into composer.json:

"fsasvari/laravel-trailing-slash": "2.*"

Step 2: Service Provider

After installing the Laravel Trailing Slash library, register the LaravelTrailingSlash\RoutingServiceProvider in your config/app.php configuration file:

'providers' => [
    // Application Service Providers...
    // ...

    // Other Service Providers...
    LaravelTrailingSlash\RoutingServiceProvider::class,
    // ...
],

Step 3: .htaccess

Copy following redirection code from public/.htaccess to your own project:

<IfModule mod_rewrite.c>
    # Redirect To Trailing Slashes If Not A Folder Or A File...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !(/$|\.)
    RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]
</IfModule>

Step 4: Routes

In routes/web.php, you must use routes with trailing slashes now:

Route::get('/', function () {
    return view('welcome');
});

Route::get('about/', function () {
    return view('about');
});

Route::get('contact/', function () {
    return view('contact');
});

Usage

Every time you use some Laravel redirect function, trailing slash ("/") will be applied at the end of url.

return redirect('about/');

return back()->withInput();

return redirect()->route('text', ['id' => 1]);

return redirect()->action('IndexController@about');

Change log

Please see CHANGELOG for more information what has changed recently.

Notice

There is a problem with overriding Laravel's Paginator and LengthAwarePaginator classes. So, every time you use paginate() method on your models, query builders etc., you must set current path for pagination links. Example:

$texts = Text::where('is_active', 1)->paginate();
$texts->setPath(URL::current());

$texts->links();

Licence

MIT Licence. Refer to the LICENSE file to get more info.

Author

Frano Šašvari

Email: sasvari.frano@gmail.com