2014-09-06 73 views
0

我是Laravel的新手,我试图创建我的第一条路线,但只有在URL中放入了一个ID时才有效。如果我没有放置任何ID(以斜线结尾),它会将我重定向到我的服务器的根目录。我读here,我应该在.htaccess中删除Laravel的重写规则,但它仍然不起作用。调用控制器重定向到根

我的路线:我的控制器的

Route::get('musibitmedias/{id}', '[email protected]'); 
Route::get('musibitmedias', '[email protected]'); 

部分:我的.htaccess文件的

# Handles "GET /" request 
public function getIndex($id) 
    { 
     return View::make('musibitmedia')->with('musibitmedias', Musibitmedia::all()); 
    } 

内容

<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

哈希此行../public/.htaccess

RewriteRule ^(.*)/$ /$1 [L,R=301] 

# RewriteRule ^(.*)/$ /$1 [L,R=301] 
+0

已经做了并重新启动了Apache,以防万一。 – MusicAndCode 2014-09-07 12:47:11

0

由于这些路由都指向相同的方法,您可以通过指示参数id参数可能存在或不存在,并在控制器方法中为其设置默认值来执行此操作。

路线:

Route::get('musibitmedias/{id?}', ['uses' => '[email protected]']); 

控制器:

public function getIndex($id = false) 
{ 

    // Is there other code involved? Where is `$id` used? 

    return View::make('musibitmedia', ['musibitmedias' => Musibitmedia::all()]); 

} 

这并不奇怪,你正在经历一些奇怪的行为,与当前的设置,如果你打/musibitmedias,它期待一个参数被传递。

+0

感谢先生。格里芬,你的解决方案解决了另一个问题,我有:-)但如果我像这样调用我的控制器:mysite.com/public/controller/,我仍然重定向到mysite.com/controller,它不存在。看来最后的斜线是问题。 – MusicAndCode 2014-09-07 04:14:12

相关问题