为了账号安全,请及时绑定邮箱和手机立即绑定

PHP Heroku - 额外的 index.php 文件导致路由问题

PHP Heroku - 额外的 index.php 文件导致路由问题

PHP
泛舟湖上清波郎朗 2022-07-16 16:19:39
我刚刚完成了 Udemy 课程,在 localhost 上一切正常。为了在 Heroku 上部署,我在根文件夹中添加了一个额外的 index.php 文件,因为 Heroku 无法“看到”公共文件夹中的 index.php 文件。所以我只是简单地添加include 'public/index.php';到新的 index.php 文件中。到目前为止,该站点现在已加载。但是,导航栏中的链接不再起作用。您将在下面的导航栏代码中看到,我在我的配置文件中使用了变量 URLROOT(这在 localhost 中有效),但是由于我添加了 index.php,事情发生了变化,并且在单击时出现 500 Internal Server Error链接。    <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>我尝试/app在 URLROOT 之后添加到文件路径的前面,因为这是存储所有内容的文件夹。但我仍然得到错误。我还尝试将 /app 添加到配置文件中 URLROOT 变量的末尾,但这完全破坏了事情。配置文件...<?php// App root define('APPROOT', dirname(dirname(__FILE__)));// URL Rootdefine('URLROOT', 'http://localhost/php-share-posts');//Site name作为一个曲线球,有一个 htaccess 文件可能在其中发挥作用,停止读取 app 文件夹内的路径?这是一个猜测,很可能是错误的。HTAccess 文件...<IfModule mod_rewrite.c>  RewriteEngine on  RewriteRule ^$ public/ [L]  RewriteRule (.*) public/$1 [L]</IfModule>我究竟做错了什么?
查看完整描述

2 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

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

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

对于 Apache,web: vendor/bin/heroku-php-apache2 public/可以解决问题。有关更多详细信息,请参阅https://devcenter.heroku.com/articles/custom-php-settings#setting-the-document-root


查看完整回答
反对 回复 2022-07-16
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

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



查看完整回答
反对 回复 2022-07-16
  • 2 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信