前提・実現したいこと
以下のような二つのパターンのrouteを通るようにしたい。
①
user/repo/branch
user/repo/branch/path1
user/repo/branch/path1/path2 (pathの部分は何個あっても可能)
下の二つだけなら
Route::get('/{user}/{repo}/{branch}/{path}','SearchController@show')->where('path','.*');
このようなroutingで通りますが一番上の場合(pathの部分がない場合)エラーになってしまいます。
②
user/repo/branch/path1/aaaa.html
user/repo/branch/path1/path2/aaaa.html
user/repo/branch/path1/path2/path3/aaaa.html
末尾のpathに@@@.@@@があった場合にrouteを通したい。
こちらもpathの部分は何個あっても大丈夫なようにしたいです。
発生している問題・エラーメッセージ
上記のrouteの通し方がわからない。
試したこと
①
Route::get('/{user}/{repo}/{branch}/{path?}','SearchController@show')->where('path?','.*');
このように指定してみたがsyntaxエラー。
①だけを通すためなら
Route::get('/{user}/{repo}/{branch}/{path}','SearchController@show')->where('path','.*');
Route::get('/{user}/{repo}/{branch}/{path?}','SearchController@show');
とすればbranch以下のpathに何が来ても(user/repo/branchのような場合でも)通るようになりますが、
@@@@.@@@のpathが来た時もshowアクションが動くようになってしまいます。
@@@@.@@@の場合は違うアクションを動かしたいです。
②
Route::get('/{user}/{repo}/{branch}/{path}','SearchController@show')->where('path','.');
Route::get('/{user}/{repo}/{branch}/{path}.{ext}','SearchController@show')->where('path','.');
いずれも試しましたがどちらもうまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/31 08:39