PHP Heroku-导致路由问题的extra index.PHP文件

PHP Heroku-导致路由问题的extra index.PHP文件,php,heroku,Php,Heroku,我刚刚完成了我的课程,在localhost上一切都很好 为了在Heroku上部署,我在根文件夹中添加了一个额外的index.php文件,因为Heroku无法“查看”公用文件夹中的index.php文件。所以我简单地添加了include'public/index.php';指向新的index.php文件。到目前为止,该站点现在已加载 但是,导航栏中的链接不再工作。您将在下面的navbar代码中看到,我在配置文件中使用了变量URLROOT,这在localhost中有效,但由于我添加了index.ph

我刚刚完成了我的课程,在localhost上一切都很好

为了在Heroku上部署,我在根文件夹中添加了一个额外的index.php文件,因为Heroku无法“查看”公用文件夹中的index.php文件。所以我简单地添加了include'public/index.php';指向新的index.php文件。到目前为止,该站点现在已加载

但是,导航栏中的链接不再工作。您将在下面的navbar代码中看到,我在配置文件中使用了变量URLROOT,这在localhost中有效,但由于我添加了index.php,情况发生了变化,单击链接时出现了500个内部服务器错误

    <div class="collapse navbar-collapse" id="navbarsExampleDefault">
      <!-- home and about page links on left of navbar  -->
      <ul class="navbar-nav mr-auto">
        <li class="nav-item">
          <a class="nav-link" href="<?php echo URLROOT; ?>">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="<?php echo URLROOT; ?>/pages/about">About</a>
        </li>
      </ul>

      <!-- register and login links on right of navbar  -->
      <!-- Contains php if to show/hide navbar options  -->
      <ul class="navbar-nav ml-auto">
        <?php if (isset($_SESSION['user_id'])) : ?>
          <li class="nav-item">
            <a class="nav-link" href="#">Welcome, <?php echo $_SESSION['user_name']; ?></a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="<?php echo URLROOT; ?>/users/logout">Logout</a>
          </li>
        <?php else : ?>
          <li class="nav-item">
            <a class="nav-link" href="<?php echo URLROOT; ?>/users/register">Register</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="<?php echo URLROOT; ?>/users/login">Login</a>
          </li>
        <?php endif; ?>
      </ul>
    </div>
作为曲线球,有一个htaccess文件可能在其中起作用,停止读取应用程序文件夹内的路径?这是一个猜测,可能是错误的。HTAccess文件

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^$ public/ [L]
  RewriteRule (.*) public/$1 [L]
</IfModule>

我做错了什么?

您不应该使用“重写”或“包含”来执行此操作

您可以告诉Apache或nginx指向Procfile中的公用文件夹


对于Apache,web:vendor/bin/heroku-php-apache2 public/起到了关键作用。有关更多详细信息,请参阅。

问题在于htaccess文件重定向到了我在开发阶段使用的完整文件路径。当上传到Heroku时,只需将其定向到公用文件夹即可。问题解决了

我已经按照您的建议更改了我的代码,将procfile.txt保存在Heroku.com上。谢谢您,但是路由问题仍然存在-500内部服务器错误。链接不起作用。有什么想法吗?不是procfile.txt,是procfile。如果你把它命名错了,它不会有任何作用。对于500错误,您需要给我们日志中的错误消息;它将包括错误原因的详细信息。是的,我没有在这里键入,但在我的代码中可以。不管怎样,我发现了问题。我在一个htaccess文件中重定向了一个完整的文件路径,需要将其缩减到公用文件夹。谢谢你的帮助,这是我不知道的,所以非常感谢。
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^$ public/ [L]
  RewriteRule (.*) public/$1 [L]
</IfModule>
App folder (with main code)
Public folder (with index.php, css etc)
.htaccess file
.index.php (including the public inex.php file)