【问题标题】:Laravel 5.2 .htaccess and 500 internal errorLaravel 5.2 .htaccess 和 500 内部错误
【发布时间】:2016-06-01 01:32:36
【问题描述】:

我已经在 Host 上部署了我的 Laravel 5.2 项目。

该项目在本地运行良好,但由于.htaccess 文件而在主机上部署它时出现500 Internal Server Error 错误!

这是我的.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>

附注:

安装并启用 Laravel 所需的 PHP 扩展。 我还授予了775storage 的权限,但没有任何改变!

任何帮助将不胜感激。

【问题讨论】:

  • 你查看错误日志了吗?

标签: php apache .htaccess laravel centos


【解决方案1】:

可能不支持多视图选项

<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}]

【讨论】:

  • 这应该不是问题,只要在&lt;IfModule mod_negotiation.c&gt;检查扩展名
  • 你是否使用过本地服务器中的公用文件夹,例如localhos/abc/public/
【解决方案2】:

通过检查服务器配置文件中的AllowOverride 指令,确保您有权使用该文件夹中的 .htaccess 文件。 (通常是 httpd.ini)。

完整指南:https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride

检查是否在您的 php.ini 文件中安装并启用了 mod_rewrite。 下面是关于如何在 apache 中安装/启用 mod_rewrite 的基本解释:https://stackoverflow.com/a/5758551/3435728

编辑:

确保您已读取 .htaccess 文件的权限

【讨论】:

    【解决方案3】:

    尽量按照以下步骤进行。

    1. connect to hosting via SSH
    
    2. install composer
    
    3. in cpanel open Select PHP version and choose 5.4. (I also set phar extension)
    
    4. install laravel: php composer.phar create-project laravel/laravel myproject --prefer-dist
    
    5. copy everything from myproject/public to public_html
    
    6. open public_html/index.php and set:
    
    7. require __DIR__.'/../myproject/bootstrap/autoload.php';
    
    8. $app = require_once __DIR__.'/../myproject/bootstrap/start.php';
    

    对于第 7 步和第 8 步,请给出您来源的路径,以便该文件找到该文件

    希望这是可行的。

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 2016-06-19
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 1970-01-01
      相关资源
      最近更新 更多