Casi siempre que se tenga dudas entre hacer algo utilizando la configuración del servidor y hacerlo en php, suele ser mucho más óptimo hacerlo modificando los archivos del servidor.
Pero en este caso podemos encontrarnos con que sea una ruta personalizada y que no tenga nada que ver con la estructura de directorios del servidor. Por ejemplo ahora me encuentro haciendo una pagina web de retos a lo CTF y las rutas que tengo son las siguientes:
A la hora de especificar las rutas vereis unos '{}', son unos parametros que se pasan por la url de modo que desde el controlador podemos obtenerlos y filtrar resultados.
//RETOS
//Muestra todos los usuarios que han completado esos retos
Route::get('retos/validations/{reto}','RetoController@getValidations');//Ej:http://mypage.com/retos/validations/Nombre-Reto
//Pagina principal que muestra todas las categorias disponibles
Route::get('retos','RetoController@getRetos');;//Ej:http://mypage.com/retos
//Pagina con un formulario para crear reto
Route::get('retos/crear','RetoController@getCrear');;//Ej:http://mypage.com/retos/crear
//Enviando datos para crear reto
Route::post('retos/crear','RetoController@postCrear');;//Peticion POST para crear un nuevo reto
//Obtiene todos los retos de una categoria
Route::get('retos/{categoria}','RetoController@getRetosCategoria');;//Ej:http://mypage.com/retos/reversing
//Muestra un reto especifico
Route::get('retos/{categoria}/{reto}','RetoController@getReto');//Ej:http://mypage.com/reversing/nombre-reto
Tomando como referencia el ultimo reto no tendria sentido crear esa estructura de directorios sino que en base a esos parametros puede obtener los datos de ese reto y mostrarselos al usuario en una vista.
El metodo 'getReto' del controlador 'RetoController' es el siguiente, fijaos que recibe los dos parametros pasados en la ruta.
public function getReto($categoria,$reto)
{
$idReto =
Project::where('nombre',$reto)
->pluck('id')
->all()[0];
return view('retos.mostrar',
array('reto' => Project
::findOrFail($idReto))); }
Y ya en la vista mostramos el reto que hemos pasado en el array