当前位置: 首页 > 知识库问答 >
问题:

Laravel路由返回500错误

薛英卫
2023-03-14

我部署基本Laravel项目到服务器。当我点击我的域名,它返回默认的欢迎视图。当我把简单的道路(见下文)添加到代码中,并尝试在浏览器中输入该路线时,它会返回500个内部错误。除"/"根路由外,所有路由都返回500错误。

文件夹结构:

/
#laravel
#subdoms
##api

Laravel文件位于Laravel目录中,但来自公共目录的文件位于api目录中。

.api目录中的htaccess文件:

<IfModule mod_rewrite.c>
  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>

存储目录和其中的所有内容对任何人都是可写、可读和可执行的。

laravel/存储/日志中没有错误日志。

Laravel/路线/web.php:

<?php

Route::get('/', function () { // works fine.
    return view('welcome');
});

Route::get('hello', function () { // 500 internal error
    return 'Hello world';
});

服务器信息:

服务器-LinuxCentOS-Apache 2.2-服务器端包括-SSI-PHP版本7.0.17

共有2个答案

顾乐心
2023-03-14

解决方案1:

在所有路由前添加/;您的大小写为/Hello。或;

解决方案二:

我猜. htaccess被忽略了。http://httpd.apache.org/docs/2.2/en/mod/core.html#allowoverride

*apache2.conf file in /etc/apache2 : *

ServerName localhost

Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

选项索引如下Symlinks AllowOverride None需要授予所有

解决方案3:

Apache可能被配置为拒绝。htaccess覆盖。在这种情况下,您需要在VirtualHost配置中添加一个段,以允许这些操作。有关更多信息,请参阅Apache文档。也可能是未启用mod_rewrite。如果使用Ubuntu、Debian或其他基于Debian的操作系统,则在sudo a2enmod重写之后再重新加载sudo服务apache2就足够了。

这是我的,它能用

 <IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    RewriteBase /laravel51/public/
   # change above to your site i.e.,  RewriteBase /whatever/public/

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

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
锺离飞尘
2023-03-14

对于那些刚刚通读了这篇文章但仍然没有解决方案的人来说,可能是因为您刚刚从gitlab或github帐户上的回购中克隆了一个项目,而忘记了生成项目。环境文件和应用程序密钥初始化。因此,转到您的项目目录,打开一个终端并运行cp。环境。实例环境。这将创建。env文件。然后运行php artisan key:generate

请注意,在我的特例中,laravel为每个路由返回500个错误。

 类似资料:
  • 故事是,我创建了一个自定义 API 路由 ,用于提取任何帖子类型的帖子。在本地,它可以完美地工作(MAMP),但在多个生产服务器(不同的环境)上,它会返回500错误。 适用于本地的API路由: http://wordpress.local/wp-json/wp-post-modal/v1/any-post-type?slug=modal-页 生产中的API路由示例(表明API路由确实存在): <

  • 问题内容: 我正在通过Ajax将幻灯片(Jquery Ui Slider)中的每个滑块值传递到我的Controller。 Slider + Ajax看起来像这样: 因此,我确实有这样的想法: 我的路线如下所示: 在我的Controller方法中,我这样调用它: Log :: info($ sliderValue)告诉我,我确实在每张幻灯片上都获得了正确的滑块值。 当我尝试返回到编辑视图时,在控制台

  • 你好,我是拉威尔的新手,也许这对你们来说太傻了。在laravel 8中,路由web。php我创建了一条如下的路线: 我想问的是,我们也可以从回调视图返回控制器吗?所以在路由 /editprofile中,第二个参数不是'App\Http\Controller\SiteController@edit_profile',而是一个回调函数,如路由'/home'。 但是它返回错误哈哈。假设我不想用__con

  • 我有一个简单的Laravel项目。在路由中,我指定返回视图。现在我想另外得到直接在我的公共文件夹与图像,css等,通过添加更多的东西到链接让说将返回我我如何到达文件夹通过?

  • 问题内容: 我在调用ajax时遇到了laravel的路由问题,但是我真的不明白是什么原因导致的,因为我应该调用ajax并成功返回。任何帮助将不胜感激。谢谢! 这是我的ajax代码 这是我的路线 这是我的控制器方法 这是我得到的错误 Laravel日志 filters.php 问题答案: 您需要在AJAX调用的标头中包含CSRF令牌。试试这个: 在您的HTML 块中: 对于您的AJAX电话: 最后,

  • 作为一个 web 后台框架,路由无疑是极其重要的一部分。本博客接下来几篇文章都将会围绕路由这一主题来展开讨论,分别讲述: 路由的使用 路由属性注册 路由的正则编译与匹配 路由的中间件 路由的控制器与参数绑定 RESTful 路由 和之前一样,第一篇将会利用单元测试样例说明我们在平时可能用到的 route 的 api 函数用法,后面几篇文章将会剖析 laravel 的 route 源码。下面开始介绍