Laravel 5.2访问example.com/而不是共享主机中的example.com/public
问题描述:
so i want to upload my laravel project to shared hosting. After completing it, when i want to access my website (just call it www.example.com) it goes to /public directory and my solution is add route for /public as my homepage but i don't want it.
so here my website path
/
/laravel
/public_html
/tmp
here is my .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>
And here is my public_html/index.php
<?php
require __DIR__.'/../laravel/bootstrap/autoload.php';
$app = require_once __DIR__.'/../laravel/bootstrap/app.php';
$app->bind('path.public', function() {
return __DIR__;
});
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
$response->send();
$kernel->terminate($request, $response);
所以我想将我的laravel项目上传到共享主机。 完成后,当我想访问我的网站(只需将其称为www.example.com)时,它会进入/ public目录,我的解决方案是为/ public添加路由作为我的主页,但我不想要它。 p >
所以我的网站路径 p>
/
/ laravel
/ public_html
/ tmp
code> pre>
这是我的.htaccess p>
&lt; IfModule mod_rewrite.c&gt;
&lt; IfModule mod_negotiation.c&gt;
选项-MultiViews
&lt ; / IfModule&gt;
RewriteEngine On
#重定向尾随斜杠如果不是文件夹...
RewriteCond%{REQUEST_FILENAME}!-d
RewriteRule ^(。*)/ $ / $ 1 [L, R = 301]
#句柄前控制器...
RewriteCond%{REQUEST_FILENAME}!-d
RewriteCond%{REQUEST_FILENAME}!-f
RewriteRule ^ index.php [L]
#n 处理授权标题
RewriteCond%{HTTP:授权}。
RewriteRule。* - [E = HTTP_AUTHORIZATION:%{HTTP:授权}]
&lt; / IfModule&gt;
code> pre>
\ n 这是我的public_html / index.php p>
&lt;?php
require __DIR __。'/ .. / laravel / bootstrap / autoload.php';
$ app = require_once __DIR __。'/ .. / laravel / bootstrap / app.php ';
$ app-&gt; bind('path.public',function(){
return __DIR __;
});
$ kernel = $ app-&gt; make(Illuminate \ Contracts \ Http \ Kernel :: class);
$ response = $ kernel-&gt; handle(
$ request = Illuminate \ Http \ Request :: capture()
);
$ response-&gt; send();
$ kernel-&gt; terminate($ request,$ response);
code> pre>
div>
答
you should upload your your Laravel project to public_html
folder then add .htaccess
file to root project
.htaccess
file:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>