How to define a Laravel route with a parameter that contains a slash character

laravel, php

Solution

Add the below catch-all route to the bottom of your `routes.php` and remember to run `composer dump-autoload` afterwards. Notice the use of "->where" that specifies the possible content of params, enabling you to use a param containing a slash.

//routes.php
Route::get('view/{slashData?}', 'ExampleController@getData')
    ->where('slashData', '(.*)');

And than in your controller you just handle the data as you'd normally do (like it didnt contain the slash).

//controller 
class ExampleController extends BaseController {

    public function getData($slashData = null)
    {
        if($slashData) 
        {
            //do stuff 
        }
    }

}

This should work for you.

Additionally, here you have detailed Laravel docs on route parameters: [ docs ]

Problem

I want to define a route with a parameter that will contain a slash `/` character like so `example.com/view/abc/02` where `abc/02` is the parameter. How can I prevent Laravel from reading the slash as a separator for the next route parameter? Because of that I'm getting a `404 not found error` now.

Original source

Related problems