In Laravel you're not restricted to static values for your paths. You can also use {}'s to denote a variable. Adding a ? after the variable name makes that variable optional. These variables are passed to your routing method (in this case, the "create" method of SameController).
This can be combined with the where method to pull off what you want. The where method allows you to define RegEx restrictions on what's allowed by a variable.
Another alternative is to use a Route::pattern, which is basically a more "global" version of where(). I've included an example of both for your convenience. :)
As for 'as', you're able to name a route in Laravel. After naming a route with 'as', you can access it through some of Laravel's useful functions, such as URL::route('nameOfRoute') or Redirect::route('nameOfRoute');
A functioning example is below:
Route::pattern('myPattern', '(create_content)?');
Route::get('/{path?}', array('as' => 'nameOfRoute', 'uses' => 'SameController@create')
)->where('path', '(create_content)?');
// This is functionally equivalent to the above Route::get.
// Route::get('/{myPattern?}', array('as' => 'nameOfRoute', 'uses' => 'SameController@create')
// );
// Example of how to make use of the 'as' defined above.
Route::get('create_more_content', function() {
return Redirect::route('nameOfRoute');
});