Laravel 路线根本不起作用

Posted

技术标签:

【中文标题】Laravel 路线根本不起作用【英文标题】:Laravel routes do not work at all 【发布时间】:2016-02-24 21:36:10 【问题描述】:

我的 laravel 路线根本不起作用。我尝试过这样的事情:

Route::get('welcome', function () 
    return View::make('welcome');
);

使用 localhost/project/project/public/welcome 访问它可以正常工作。我已经以多种方式进行了尝试,但似乎路由无法正常工作,因为 localhost/project/welcome 显示 404 错误。我知道有类似的话题,但我没有答案。有人可以帮帮我吗?

我的 htaccess 文件是这样的(我从来没有碰过它):

<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]
</IfModule>

【问题讨论】:

【参考方案1】:

您需要编辑您的 HTTP 服务器以将文档根目录设为 project/project/public/

例如在 Apache 中,你可以这样做:

<VirtualHost *:80>                                                                                                                                                                                                                                                     
        ServerAdmin webmaster@localhost                                                                                                            
        DocumentRoot /var/www/project/project/public/

nginx 中它会这样:

server 
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/project/project/public/;

【讨论】:

感谢您的回答!它只是 httpd.conf 文件吗? 取决于您的服务器配置。您可能会在 /etc/apache2/sites-available 或 /etc/nginx/sites-available 下找到它 我用的是xampp,会搜索一下 对于 XAMPP 我认为是 httpd.conf 哦,终于出事了,但我现在没有权限打开这个页面 XD【参考方案2】:

你说过你可以通过tlocalhost/project/project/public/welcome访问你的laravel应用。这是因为此路径是您的起始根路径,即您启动应用程序的位置。

允许您访问新路线的示例

Route::get('other_route', function () 
    return View::make('welcome');;
);

如果您在浏览器中输入localhost/project/project/public/other_route,则可以访问此代码

localhost/project/welcome 将不起作用,因为您的应用程序比此路径更深。

您应该为您的应用程序设置虚拟主机,以便您的路径可以是myapp.local/welcome myapp.local/other_route

或者访问你的应用,假设你的起点是http://localhost/project/project/public/

【讨论】:

我认为在 laravel 中,斜杠 / 之后的 url 中的所有内容都在公共文件夹中。这就是我真正需要的。使公用文件夹成为 url 的起点 如果我理解你的问题,那是你的网络服务器配置错误,而不是 laravel 问题 哦,我确定我需要从 laravel 项目内部配置它。有服务器设置等 你可以启动 laravel 的 php web 服务器,从你的应用程序根目录在你的操作系统控制台中输入命令php artisan serve,你将能够从localhost:8000运行你的项目

以上是关于Laravel 路线根本不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 条新路线不起作用

为啥 Laravel 中的新路线不起作用?

路线在 laravel 4.2 中不起作用

Laravel 5.3路线不起作用

Laravel 快速入门指南路线不起作用

路线存在但不起作用,删除的路线仍然有效 Laravel