PHP Heroku-导致路由问题的extra index.PHP文件
我刚刚完成了我的课程,在localhost上一切都很好 为了在Heroku上部署,我在根文件夹中添加了一个额外的index.php文件,因为Heroku无法“查看”公用文件夹中的index.php文件。所以我简单地添加了include'public/index.php';指向新的index.php文件。到目前为止,该站点现在已加载 但是,导航栏中的链接不再工作。您将在下面的navbar代码中看到,我在配置文件中使用了变量URLROOT,这在localhost中有效,但由于我添加了index.php,情况发生了变化,单击链接时出现了500个内部服务器错误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
<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)