【问题标题】:Sub directory in laravel project in the server服务器中laravel项目中的子目录
【发布时间】:2020-02-24 16:32:14
【问题描述】:

我已经创建了一个 laravel 项目并像https://www.mydemosite.org/healthcard一样上传到服务器

然后我将所有文件上传到子目录“healthcard”。现在我已经完成了公共文件夹中的更改。

  1. 将公用文件夹中的所有文件移动到“healthcard”文件夹。

  2. 把索引文件改成这样

    需要 DIR.'/bootstrap/autoload.php'; $app = require_once DIR.'/bootstrap/app.php';

在此之后我添加了一个 .htaccess 文件到根目录

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

在这样的公用文件夹中

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On    
    RewriteBase /healthcard/

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

我也更改了 .env 文件

APP_URL=https://www.mydemosite.org/healthcard

但它仍然无法正常工作。我是否应该做任何其他更改。请告诉我。提前感谢您的帮助。

【问题讨论】:

  • 这绝对不是一个简单的配置。只是一个问题:您不能将其设为子域吗?喜欢 healthcard.mydemosite.org?这通常更容易。

标签: laravel


【解决方案1】:

请按顺序执行以下操作

  1. 解压您在public_html中名为local的文件夹中的所有文件

  2. public文件夹中的文件移动到local文件夹旁边的public_html

  3. 打开index.php文件

改变这一行:

require __DIR__.'/../vendor/autoload.php';

到这里:

require __DIR__.'/local/vendor/autoload.php';

同样如此:

$app = require_once __DIR__.'/../bootstrap/app.php';

改成这样:

$app = require_once __DIR__.'/local/bootstrap/app.php';
  1. 打开.env 文件并设置您的数据库信息
DB_DATABASE=YOUR_DB_NAME
DB_USERNAME=YOUR_DB_USERNAME
DB_PASSWORD=YOUR_DB_PASS
  1. 请务必检查下面的文件,因为它有时会在提取其内容时发生变化。所以用这个代码替换它的内容
    <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>
  1. 检查您的服务器或共享主机上安装的 php 版本必须符合 laravel 要求的版本。

【讨论】:

    【解决方案2】:

    对于一个类似的项目,我将其作为根 .htaccess:

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{REQUEST_URI} !^public
        RewriteRule ^(.*)$ public/$1 [L]
    </IfModule>
    

    这个在公共文件夹中:

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

    这是我从其他地方得到的复制粘贴,所以我不能给你更多的细节,但值得一试......

    另外:尝试将您的 index.php 恢复到原来的状态并将其放回公用文件夹中(实际上将您从公用文件夹中移出的所有文件放回原处。)

    【讨论】:

    • 如果 elseware 是另一个网站,那么链接会很好:)
    • 来自我公司的一个预先存在的项目,恐怕@RobBiermann
    • @Ranjit 尝试将您的 index.php 恢复到原来的状态并将其放回公用文件夹(实际上将您从公用文件夹中移出的所有文件放回原处。)跨度>
    • 是的,我也这样做了,但还是不行。
    • 这就是我的想法,对不起。
    猜你喜欢
    • 2019-09-02
    • 1970-01-01
    • 2022-01-01
    • 2021-12-05
    • 2020-08-21
    • 2019-01-04
    • 2016-05-29
    • 2018-07-04
    • 2022-11-23
    相关资源
    最近更新 更多