Laravel 得到 500 内部服务器错误
Posted
技术标签:
【中文标题】Laravel 得到 500 内部服务器错误【英文标题】:Laravel get 500 internal server error 【发布时间】:2014-08-05 20:56:04 【问题描述】:我有关于共享托管的 laravel 项目,我的结构应用程序是
/home/username
`->fontEndApps ( my laravel apps )`
`->backendApps ( my laravel apps )`
`->public_html`
在 public html 中我放了 index.php、htaccess 和 admin 文件夹,在 admin 文件夹中有 index.php 和 htaccess
后端工作正常,但是当我尝试访问 www.domain.com/segment1 或 www.domain.com/segment1/segment2 时,前端总是出现 500 内部服务器错误,这是我的前端 htaccess 文件和后端
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options +FollowSymLinks
</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>
请帮我解决这个问题
【问题讨论】:
注释掉RewriteRule ^(.*)/$ /$1 [L,R=301]
这一行并重新测试
【参考方案1】:
确保您已将 Vendor 文件夹上传到服务器,它可能导致 500 错误。
【讨论】:
【参考方案2】:我必须在 .htaccess 中评论这一行,它才有效:
#<IfModule mod_negotiation.c>
# Options -MultiViews
#</IfModule>
【讨论】:
【参考方案3】:经过几个小时的搜索,这解决了问题:
确保 /public_html 中的 index.php 具有 644 权限(我的是 664,这是内部服务器错误的原因)。
【讨论】:
【参考方案4】:您的问题在于 .htaccess 文件。在 goDaddy 中,他们不会设置 RewriteBase
,因此您必须在 .htaccess 文件中提供它。完整的代码应该是这样的。这适用于我的 laravel 投资组合site
<Limit GET POST PUT DELETE>
#For REST support
Allow from all
</Limit>
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase / # <------------ This one you missed
#Just to redirect to www.site.com when only site.com comes
RewriteCond %HTTP_HOST !^www\. [NC]
RewriteRule ^(.*)$ http://www.%HTTP_HOST [R=301,L]
#end of codes
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]
</IfModule>
【讨论】:
嘿,你把这个放在哪里了?在公共文件夹中,还是在根目录中? @Ned 在public
文件夹中。 Apache 查看公用文件夹。
在使用 php7.1 的 1and1 主机上与 Laravel 5.5 非常配合以上是关于Laravel 得到 500 内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章
Laravel:为啥我的 ajax 请求返回“500(内部服务器错误)”?