我想为我的网站设置一些不错的网址,但我的问题是我的GET参数并非总是被填充。
例如,我可以拥有所有这些不同的参数:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
但是我不太确定我是否应该为我可能拥有的所有不同场景创建路线,或者是否有其他方法可以获得一些不错的URL?
我想到它的样子:
?brand=BMW&model=i8+m4&location=USA
?brand=BMW&location=USA
?brand=BMW+Audi
?
但如果我必须为每个场景创建路线,它可能会变得很长!
/brand/BMW+Audi/location/USA/model/i8
否则我也可以创建一些动态参数,例如:
Route::get(/brand/{brand})
Route::get(/brand/{brand}/location/{location})
Route::get(/brand/{brand}/model/{model}/location/{location})
Route::GET(/location/{location})...
有什么想法吗?
答案 0 :(得分:1)
我认为获取参数是一个完美的解决方案。但如果你想要“漂亮的网址”,你可以做类似的事情:
Route::get('/brands/{brand}', 'BrandController@search');
Route::get('/brands/{brand}/{model}', 'BrandController@search');
Route::get('/brands/{brand}/{model}/{location}', 'BrandController@search');
然后在你的BrandController中:
public function search($brand, $model = null, $location = null)
{
//
}
这样$model
和$location
或可选。您还可以$brand
选择$brand = null
。但是这些路线现在至少需要一个参数。