luk*_*rat 54
假设您的服务器中有此文件夹结构
.cpanel/
public_html/
public_ftp/
..
Run Code Online (Sandbox Code Playgroud)
并且laravel文件夹结构是
app/
bootstrap/
public/
vendor/
composer.json
artisan
..
Run Code Online (Sandbox Code Playgroud)
您可以在服务器上内嵌public_html和public_ftp文件夹创建文件夹名称mylaravelsite ,并将除了公共文件夹之外的整个laravel应用程序复制到该文件夹,因为您将所有内容粘贴到该文件夹上public_html,因此您现在拥有:
.cpanel/
public_html/
public_html/packages
public_html/vendor
public_html/index.php
public_html/.htaccess
...
public_ftp/
mylaravelsite/
mylaravelsite/app
mylaravelsite/bootstrap
...
Run Code Online (Sandbox Code Playgroud)
在您public_html/index.php更改以下行时:
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';
Run Code Online (Sandbox Code Playgroud)
至
require __DIR__.'/../mylaravelsite/bootstrap/autoload.php';
$app = require_once __DIR__.'/../mylaravelsite/bootstrap/start.php';
Run Code Online (Sandbox Code Playgroud)
并且也不要忘记改变 /mylaravelsite/bootstrap/paths.php公共路径,你可以使用它.
'public' => __DIR__.'/../public',
Run Code Online (Sandbox Code Playgroud)
至
'public' => __DIR__.'/../../public_html',
Run Code Online (Sandbox Code Playgroud)
您的网站应该正在运行.
小智 20
在根文件夹中创建.htaccess并写入这些行
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
对于生产服务器,建议您将域直接指向公用文件夹
fid*_*per 14
听起来你缺少的信息是:
这也称为"网络根".Apache专门将其称为DocumentRoot - 单击该链接以获取官方解释.
基本上它的作用是设置服务器从哪个目录中提取文件.在Laravel中,文档根目录应该是public文件夹.
将DocumentRoot设置为public意味着进入http://mylaravelsite.com浏览器将实际上"指向" public您想要的文件夹.
在.htaccess文件中(实际上,更有可能在虚拟主机配置中),您可以DocumentRoot为您的站点设置:
DocumentRoot /path/to/laravel-app/public
Run Code Online (Sandbox Code Playgroud)
你如何设置它取决于你的托管.每个主机都有不同的方式来设置网站,所以我们无法专门为您解答 - 您应该咨询您的网站托管技术支持.关键是该public目录应该是Web根目录,而其他所有内容应该是"在Web根目录后面".
公平警告:一些托管服务提供商没有给你足够的访问权来实现这一目标.
在 Laravel 项目的根目录中创建 .htacess 文件并将此代码放入其中。
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]
RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php
Run Code Online (Sandbox Code Playgroud)
或者将此代码添加到您的 .htaccess 中
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)
将您的网络目录指向public/.如果您使用的是apache,这将有效:
<VirtualHost *:80>
DocumentRoot /var/www.mylaravelsite.com/public/
ServerName www.mylaravelsite.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
小智 5
如果它不存在,只需在 Laravel 根目录上添加 .htaccess 文件并在其中添加以下行,就是这样,
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75351 次 |
| 最近记录: |