【问题标题】:404 or 500 errors when attempting to access Laravel routes尝试访问 Laravel 路由时出现 404 或 500 错误
【发布时间】:2017-09-28 08:46:47
【问题描述】:

我在启动 Laravel 项目并在共享主机帐户上运行时遇到了一些问题。当然,这在本地运行良好,几天前在主机帐户上运行良好;我不确定我可以进行哪些更改以使其停止工作。

既然是共享主机,我觉得我没有能力修改httpd.conf,但我当然可以修改.htaccess

我想要一个存储多个应用程序的地方,所以我的计划是在我的 Web 根目录中为每个 Laravel 项目创建一个新文件夹。这就是我目前的设置方式(不确定这是否是一个好方法):

然后将每个文件夹的公用文件夹映射到子域:

问题是:当我尝试访问除根页面 '/' 之外的任何路线时,我会收到 404 错误。这是来自主机的通用 404,而不是来自 Laravel。当我尝试通过子域访问时,我收到 500 错误。

如果我访问:

我在 httpd.conf 中看到了其他提到更改设置的问题,但我认为我无权这样做。鉴于这以前对我有用,我认为除此之外还有一个解决方案。

我可以做些什么来防止这些错误?

另外,为什么从http://example.com/App1/publichttp://app1.example.com 访问页面时会出现不同的错误?

任何帮助将不胜感激..!

不确定这是否有帮助,但这是我的 .htaccess 代码(Laravel 5.4.21 默认):

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

【问题讨论】:

  • 你得到什么样的 500 错误?从主机还是从应用程序?如果您将APP_DEBUG 设置为true,则来自应用程序的500 将留下登录laravel.log
  • 感谢@MarcoAurélioDeleu,不幸的是这只是通用的500 Internal Server Error,不是来自Laravel
  • 听起来您的.htaccess 没有得到处理。可能是文件权限或服务器阻止它。
  • 再次感谢。我确认 .htaccess 正在处理中。 (我添加了一堆无效文本并保存了它;在出现 500 错误后;将其改回后,页面加载正常)。不过,其他路线的问题仍然存在

标签: php apache laravel .htaccess


【解决方案1】:

通过修改 Laravel 默认的 .htaccess 文件,添加以下行解决了这个问题:

RewriteBase /

这修复了404500 错误。

完全是这样:

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

    RewriteEngine On
    RewriteBase /

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 2018-01-19
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    相关资源
    最近更新 更多