调用控制器重定向到root

时间:2014-09-06 16:46:46

标签: .htaccess redirect laravel-4 laravel-routing

我是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>

非常感谢任何帮助。

谢谢!

2 个答案:

答案 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]