在共享主机子目录上部署 Laravel
Deploying Laravel on a shared hosting sub-directory
我正在尝试在共享主机上的 WordPress 子目录中部署 laravel 5.5。我尝试了太多来自 google 的建议,但我仍然无法实现。它总是 returns 404 错误。 WordPress 安装在里面 /public_html
我需要在 /public_html/my-laravel-app
上安装 Laravel
这是我的 .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
/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>
/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 ^(.*)/$ / [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>
/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';
Laravel 不适用于开箱即用的子文件夹。您需要调整一些文件才能使其正常工作。请查看 laravel-news.com
上的以下文章
我的建议是重新考虑您的方法,看看是否有其他不需要子文件夹的方法来实现您的目标。
编辑:
我想包括文章中的更多步骤,以防将来删除它,但步骤太多了。
我忘了更新这个问题,但我已经解决了这个问题。
这实际上与 WordPress 的 .htaccess 无关,我摆脱了我的自定义 .htaccess 设置。
我所做的是,在 public_html/laravel-app
上创建一个新文件夹,然后在我的 laravel-app
中,
这是我克隆 repo 的地方,所以它变成了 public_html/laravel-app/my-app
然后,我复制了 my-app/public
目录中的文件(文件夹除外)并将其移动到 laravel-app/
.
$ cd /public_html/laravel-app
$ cp -a my-app/public/*.* ./
然后我通过 运行
为 my-app/public
中的目录创建了一个符号 link
$ ln -sf my-app/public/*/ ./
然后,最后,我修改了 public_html/laravel-app/index.php
在第 22 行和第 36 行,
require __DIR__.'/my-app/bootstrap/autoload.php';
$app = require_once __DIR__.'/my-app/bootstrap/app.php';
那就大功告成了。
我正在尝试在共享主机上的 WordPress 子目录中部署 laravel 5.5。我尝试了太多来自 google 的建议,但我仍然无法实现。它总是 returns 404 错误。 WordPress 安装在里面 /public_html
我需要在 /public_html/my-laravel-app
上安装 Laravel
这是我的 .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
/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>
/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 ^(.*)/$ / [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>
/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';
Laravel 不适用于开箱即用的子文件夹。您需要调整一些文件才能使其正常工作。请查看 laravel-news.com
上的以下文章我的建议是重新考虑您的方法,看看是否有其他不需要子文件夹的方法来实现您的目标。
编辑:
我想包括文章中的更多步骤,以防将来删除它,但步骤太多了。
我忘了更新这个问题,但我已经解决了这个问题。
这实际上与 WordPress 的 .htaccess 无关,我摆脱了我的自定义 .htaccess 设置。
我所做的是,在 public_html/laravel-app
上创建一个新文件夹,然后在我的 laravel-app
中,
这是我克隆 repo 的地方,所以它变成了 public_html/laravel-app/my-app
然后,我复制了 my-app/public
目录中的文件(文件夹除外)并将其移动到 laravel-app/
.
$ cd /public_html/laravel-app
$ cp -a my-app/public/*.* ./
然后我通过 运行
为my-app/public
中的目录创建了一个符号 link
$ ln -sf my-app/public/*/ ./
然后,最后,我修改了 public_html/laravel-app/index.php
在第 22 行和第 36 行,
require __DIR__.'/my-app/bootstrap/autoload.php';
$app = require_once __DIR__.'/my-app/bootstrap/app.php';
那就大功告成了。