我将基本的Laravel项目部署到服务器。当我点击我的域时,它返回默认的欢迎视图。当我添加简单的道路(见下文)代码并尝试在浏览器中输入该路线时,它返回500内部错误。除了" /"所有路线都返回500错误。根路线。
文件夹结构:
/
#laravel
#subdoms
##api
Laravel文件位于laravel目录中,但公共目录中的文件除外。
api目录中的.htaccess文件:
<IfModule mod_rewrite.c>
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>
存储目录及其中的所有内容都是可写的,可读的,可供任何人执行。
laravel / storage / logs中没有错误日志。
laravel / routes / web.php:
<?php
Route::get('/', function () { // works fine.
return view('welcome');
});
Route::get('hello', function () { // 500 internal error
return 'Hello world';
});
服务器信息:
服务器 - Linux CentOS - Apache 2.2 - 服务器端包括 - SSI - PHP版本7.0.17
答案 0 :(得分:1)
<强>解决方法1:强>
在所有路线前添加'/';你的情况'/你好'。要么 ;
<强>溶液2:强>
我猜.htaccess被忽略了。 http://httpd.apache.org/docs/2.2/en/mod/core.html#allowoverride
*apache2.conf file in /etc/apache2 : *
ServerName localhost
Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
选项索引FollowSymLinks AllowOverride无 要求全部授予
解决方案3:
Apache可能配置为拒绝.htaccess覆盖。在这种情况下,您需要在VirtualHost配置中添加一个允许这些段的段。有关更多信息,请参阅Apache文档。也可能是未启用mod_rewrite的情况。如果使用Ubuntu,Debian或其他基于Debian的操作系统,则使用sudo a2enmod重写,然后使用sudo service apache2 reload就足够了。
这是我的,它有效
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase /laravel51/public/
# change above to your site i.e., RewriteBase /whatever/public/
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
答案 1 :(得分:0)
Route::get('/', function () {
return response()->view('welcome',[],200);
})
答案 2 :(得分:0)
对于那些刚刚读完该书但仍然没有解决方案的人,可能是您只是从gitlab或github帐户上的回购中克隆了一个项目,却忘记了生成.env文件并在其中生成APP_KEY。因此,请转到您的项目目录并打开一个终端,然后运行cp .env.example .env
。这将创建.env
文件。然后运行php artisa key:generate
。
请注意,在我的特殊情况下,laravel为每条路线返回了500条错误。