这是我第一次上传到Laravel站点的远程服务器。
本地 我已经配置了一个虚拟主机,所以我对我的网站的访问是这样的:
site.domain.com //it's pointing htdocs/laravel-proyect/public
我已将我的站点上传到我的远程服务器,然后:
- 更改存储及其所有目录的权限
- 将权限更改为引导程序
更改应用程序的配置.php
'网址' => 'http://site.domain.com',
使用新参数(以及电子邮件.php更改 database.app 中的配置
- 加载数据库中的所有表和数据
然后我尝试加载我的网站并得到 500 内部服务器错误
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
它有点工作,我在路由中有以下代码.php:
// Begins in the login view
Route::get('/', function()
{
if (!Sentry::check()) {
$data = array();
if (Session::has('email')) {
$data = array('email' => Session::get('email'));
}
return Redirect::route('login', $data);
}
else
return Redirect::route('users');
});
/ ========================================
// LOGIN, LOGOUT AND ACTIVATION SECTION ==========
// // ============================================
// show the login page
Route::get(MyHelpers::textLang('login','routes'), array('as' => 'login', function()
{
if (Sentry::check())return Redirect::route('users');
else {
$rules = User::$rules_login;
// show the login page (app/views/frontend/login.blade.php)
return View::make('frontend.login', compact('rules'));
}
所以第一次 mo url 看起来像:
site.domain.com/entrar
'entrar',(西班牙语登录),y由MyHelpers设置::textLang('login','routes'),访问我的类MyHelpers和lang文件以将"login"翻译成"entrar",但不加载模板。
开始 :
- 阅读文档,进行一些更改:从中删除多视图.htaccess(已弃用),也将RewriteBase添加到.htaccess中。
- 将/public 内容复制到基本目录并更改引导程序/路径中的路径和在索引中.php文件。
- 在两个远程服务器中重新安装以验证我的提供程序是否失败(相同的错误)。与我的提供者交谈,支持支持服务器上没有错误。
- 我在基本目录中创建了一个新的 htaccess,将路由重定向到/public。
- 尝试使用 php 5.4、5.5 和 5.6
实际上我的.htaccess是:
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
而且我没有更多的想法,也找不到与此相关的其他解决方案。
知道吗?拜托,我疯了,在温斯蒂,我必须乞求一个新的项目,并且仍然在与这个合作。
谢谢
我必须添加
RewriteBase /
到 .htaccess
我在heroku上有一个演示的laravel应用程序 简单的 Blog.My.htaccess文件是:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
#other lines for gzip
您的 .htaccess 文件似乎没有问题。这可能是您的代码逻辑有问题。如果您在本地主机上没有收到相同代码的错误,请再次检查您的配置。对于 laravel 4,堆栈溢出 Laravel 4 虚拟主机和 mod 重写设置已经存在类似的问题
请注意,laravel 5(如果您正在使用它)从 .env 文件中获取输入(数据库连接和其他设置)。
如果您仍然收到错误,请尝试在索引页面上发送简单的响应,例如:
Route::get('/','basic configurations are correct');
然后一步一步地复杂化。它将帮助您查找错误。
@kikerrobles的答案确实有效。
最终.htaccess
文件应如下所示
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteBase /
# 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>