2017-01-17 118 views
0

我刚刚开始学习laravel,我一直在寻找这个答案。我一直在按照教程一步一步启动它,并让它运行欢迎屏幕,但如果我点击登录或注册它说该文件不存在。但是,如果我制作路线。Laravel 5.3找不到登录页面

Route::get('/', function() { 
    return view('auth/login'); 
}); 

它找到页面并显示它。

这里是链接到登录页面。

<div class="panel panel-success"> 
      <div class="panel-heading">List of Game of Thrones Characters</div> 

       @if(Auth::check()) 
        <p>Success</p> 
       @endif 


     </div> 
     <?php 
      echo getcwd() . "\n"; 
     ?> 

     @if(Auth::guest()) 
      <a href="/login" class="btn btn-info"> You need to login to see the list >></a> 
     @endif 

在href标记我试图/ auth /中登录,/登录,任何的组合,你可以尝试,它会找不到该文件不管是什么。这是我试图让这个工作的路线。

Route::get('/login', function() { 
    return view('auth/login'); 
} 

任何人都可以解释为什么这不工作?我到处寻找,这似乎是正确的方式来称呼这一点。记得我刚刚获得了开始模板的工作。

+0

如果将锚标记更改为'index.php/login',它会工作吗?如果是这样,那么你需要设置一个URL重写,将所有请求重写为'index.php'。 – BrokenBinary

+0

你忘了添加闭括号和分号,就像这样:');' – Paras

+0

是的,它的工作原理!我会怎么做呢? –

回答

2

您需要在Web服务器中设置Web服务器重写。

最简单的处理方法是在public/目录中使用.htaccess文件。这是默认.htaccess文件Laravel 5.3:

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

你还需要确保mod_rewrite Apache模块已启用。你可以通过运行启用模块并重新启动Apache的这两个命令来实现:

a2enmod rewrite 
service apache2 restart 
+0

也必须启用apache才能重写。谢谢 –