在共享托管子目录上部署 Laravel

Dex*_*gil 5 php wordpress .htaccess shared-hosting laravel

我正在尝试将 laravel 5.5 部署在共享主机上的 WordPress 子目录中。我尝试了谷歌的太多建议,但仍然无法使其发挥作用。它总是返回 404 错误。WordPress 已安装在内部/public_html ,我需要安装 Laravel,/public_html/my-laravel-app 这是我的.htaccess文件的外观:

/public_html/.htaccess

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# protect wpconfig.php
<files wp-config.php>
order allow,deny
deny from all
</files>

# protect the htaccess file
<files .htaccess>
order allow,deny
deny from all
</files>

# disable the server signature
ServerSignature Off
Run Code Online (Sandbox Code Playgroud)

/public_html/my-laravel-app/.htaccess

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /my-laravel-app/
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule . /my-laravel-app/public/index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

/public_html/my-laravel-app/public/.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]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

/public_html/my-laravel-app/public/index.php (index.php 的某些部分)

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

/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/

$app = require_once __DIR__.'/../bootstrap/app.php';
Run Code Online (Sandbox Code Playgroud)

Dex*_*gil 2

我忘了更新这个问题,但我已经解决了这个问题。 这实际上与 WordPress 的 .htaccess 无关,我删除了自定义 .htaccess 设置。我所做的是,在public_html/laravel-app我的 里面创建一个新文件夹laravel-app,这是我克隆存储库的地方,所以它变成了,public_html/laravel-app/my-app 然后,我复制了目录中的文件(文件夹除外)my-app/public并将其移动到laravel-app/.

$ cd /public_html/laravel-app
$ cp -a my-app/public/*.* ./  
Run Code Online (Sandbox Code Playgroud)

my-app/public然后我通过运行为内部目录创建了一个符号链接

$ ln -sf my-app/public/*/ ./
Run Code Online (Sandbox Code Playgroud)

最后,我修改了public_html/laravel-app/index.php 第22行和第36行,

require __DIR__.'/my-app/bootstrap/autoload.php';
$app = require_once __DIR__.'/my-app/bootstrap/app.php';
Run Code Online (Sandbox Code Playgroud)

然后就完成了。