Heroku 403 Forbidden Error

时间:2016-07-24 19:51:43

标签: php .htaccess heroku routing

我部署了一个PHP应用程序,当我点击url时,出现以下错误:

Forbidden

You don't have permission to access / on this server.

我想它会尝试进入app /目录但不能。

我的项目结构:

my-project
|
|-> app/
|-> public/ (index.php inside here that takes care of routing)
Procfile
composer.json
etc.

日志显示的内容:

Jul 24 12:44:08 cryptic-beyond-39147 app/web.1:  [Sun Jul 24 19:44:07.846582 2016] [autoindex:error] [pid 99:tid 139960748263168] [client 10.179.164.130:28253] AH01276: Cannot serve directory /app/: No matching DirectoryIndex (index.php,index.html,index.htm) found, and server-generated directory index forbidden by Options directive 
Jul 24 12:44:08 cryptic-beyond-39147 app/web.1:  10.179.164.130 - - [24/Jul/2016:19:44:07 +0000] "GET / HTTP/1.1" 403 209 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36 
Jul 24 12:44:13 cryptic-beyond-39147 heroku/router:  at=info method=GET path="/" host=cryptic-beyond-39147.herokuapp.com request_id=9b5e81de-440b-4001-90a4-bc94ee891d3c fwd="89.210.178.134" dyno=web.1 connect=0ms service=1ms status=403 bytes=373 

Procfile

web: vendor/bin/heroku-php-apache2 public/

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

    AddType 'text/css; charset=UTF-8' css

</IfModule>

5 个答案:

答案 0 :(得分:8)

嗯,所以我找到了解决方案。

我的Procfile有一个.txt扩展名(所以Procfile.txt),而它只需要是Procfile。

退出一个愚蠢的错误,但我想我应该留下答案,以备将来参考。也许这会节省别人的时间。

答案 1 :(得分:1)

我也遇到了同样的问题,因为我在根文件夹中没有任何index.php文件,所以我什么也没得到,从而导致该错误。如果您有同样的问题,那么在heroku应用程序URL之后,只需键入您的主页php文件即可。例如-app / custom.php。

答案 2 :(得分:0)

一个非常奇怪的错误! Procfile对我来说不是问题的原因。

由于某种原因,当我在根文件夹中创建一个名为“ app”的空目录时,此问题已修复。

答案 3 :(得分:0)

我有一个类似的问题:

在我的index.php中,我正在使用include_once('index.html')

已更改为header('Location: /index.html'),并且可以使用。

注意index.php和index.html都在根目录上。

答案 4 :(得分:0)

一个真正、简单且小巧的解决方案:

<块引用>

ProcFile

名字。我将问题命名为 ProcFile,将 ProcFile 重命名为 Procfile 仅首字母大写。