我在共享托管上有laravel项目,我的结构应用程序是
/home/username
`->fontEndApps ( my laravel apps )`
`->backendApps ( my laravel apps )`
`->public_html`
在公共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>
请帮我弄清楚这个问题
答案 0 :(得分:8)
您的问题在于 .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>
答案 1 :(得分:5)
经过几个小时的搜索,这解决了这个问题:
确保/ public_html中的 index.php 具有 644 权限(我的是664,这是内部服务器错误的原因)。
答案 2 :(得分:4)
我必须在.htaccess中注释这一行并且它有效:
#<IfModule mod_negotiation.c>
# Options -MultiViews
#</IfModule>
答案 3 :(得分:1)
Make sure you have the Vendor folder uploaded in the server it can cause 500 error.