我是Laravel的新手,我正在尝试创建我的第一条路线,但只有当我在网址中添加ID时,它才有用。如果我没有输入任何ID(以斜杠结尾),它会将我重定向到我的服务器的根目录。我读过here我应该删除.htaccess中Laravel的重写规则,但它仍然无效。
我的路线:
Route::get('musibitmedias/{id}', 'MusibitmediasController@getIndex');
Route::get('musibitmedias', 'MusibitmediasController@getIndex');
我的控制器的一部分:
# Handles "GET /" request
public function getIndex($id)
{
return View::make('musibitmedia')->with('musibitmedias', Musibitmedia::all());
}
我的.htaccess文件的内容
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
# RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
非常感谢任何帮助。
谢谢!
答案 0 :(得分:0)
由于这些路由都指向相同的方法,因此您可以通过指示id
参数可能存在或可能不存在,并在控制器方法中为其设置默认值来执行此操作。
<强>路线:强>
Route::get('musibitmedias/{id?}', ['uses' => 'MusibitmediasController@getIndex']);
<强>控制器:强>
public function getIndex($id = false)
{
// Is there other code involved? Where is `$id` used?
return View::make('musibitmedia', ['musibitmedias' => Musibitmedia::all()]);
}
您遇到与当前设置一样的奇怪行为并不奇怪,如果您点击/musibitmedias
,则期望传递参数。
答案 1 :(得分:0)
在../ public / .htaccess
中哈希这一行RewriteRule ^(.*)/$ /$1 [L,R=301]
到
# RewriteRule ^(.*)/$ /$1 [L,R=301]