在子文件夹上部署的Laravel应用上路由失败

时间:2019-12-18 17:00:57

标签: laravel routing cpanel

好,这就是发生的事情。

我已经创建了一个小的laravel应用(实际上,它仍处于开发阶段)。

当我将其上传到服务器(通过cPanel管理的共享主机)时,已将其部署到主网站内的子文件夹中。

服务器的public_html文件夹上有一个主要网站(一个WordPress),因此我创建了一个子文件夹,用于放置应用程序。

现在,当您请求http://oursite.com时,您将到达Wordpress网站。 然后,当您请求http://oursite.com/laravelapp时,您将到达laravel应用的初始页面。

但是,当我尝试浏览应用程序中的任何页面时,路由会将我带回到根Web文件夹内的路由。

例如,如果我按下登录按钮,对http://oursite.com/laravelapp/login的请愿重定向到http://oursite.com/login,显然页面加载失败

有趣的是,如果我直接访问公共页面,它似乎可以正常工作。

如果我直接请求http://oursite.com/laravelapp/public/index.php并按下相同的登录按钮,则会向http://oursite.com/laravelapp/public/index.php/login发出请求,它可以正常工作!甚至在该请求上也正确检测到JS和CSS链接!

我怀疑这可能是很愚蠢的事情,因为我太累了,所以我现在看不到它,但是我将非常感谢对此事的任何见识。

我的laravelapp文件夹中的index.php如下:

    <?php

  /**
   * Laravel - A PHP Framework For Web Artisans
   *
   * @package  Laravel
   * @author   Taylor Otwell <taylor@laravel.com>
   */

$uri = urldecode(
    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
);

// This file allows us to emulate Apache's "mod_rewrite" functionality from the
// built-in PHP web server. This provides a convenient way to test a Laravel
// application without having installed a "real" web server software here.
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
    return false;
}

require_once __DIR__.'/public/index.php';

这是/ laravelapp / public文件夹中.htaccess文件的代码:

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

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

也许我可以使用myLaravelApp.oursite.com之类的子域来解决此问题?

1 个答案:

答案 0 :(得分:0)

好的。

我解决了将laravelApp / public上的.htaccess复制到laravelApp的问题。

似乎根文件夹需要某种类型的重定向,这就像一种魅力。