Heroku对所有不存在的文件路径使用index.php

时间:2018-01-25 18:15:20

标签: php heroku

我试图用php设置单页面应用程序。 index.php路由所有调用并使用javascript更新url。路由在我的本地机器上正常工作,但是当尝试去/ home或/ about时,Heroku会抛出404错误。

的index.php

<?php

$request_uri = explode('?', $_SERVER['REQUEST_URI'], 2);

// Route it up!
switch ($request_uri[0]) {
    // Home page
    case '/':
        echo "<script>history.pushState(null, null, \"$request_uri[0]\" + \"home\")</script>";
    case '/home':
    // About page
    case '/about':
        require 'views/templates/template.php';
        break;
}
?>

我想要的只是自定义Heroku的路由。例如:&#34; / home&#34;和&#34; / about&#34;将路由回index.php。 Php的内置服务器通过将每个未找到的文件带回index.php来处理我想要的路由。

以下是我网站的链接:https://shen-an-calhar.herokuapp.com/

1 个答案:

答案 0 :(得分:0)

我只是为同样的问题向其他人发布答案。我意识到在本地apache服务器上运行我的代码之后,我得到了相同的答案。 我在网上做了一些搜索,我发现了一个在apache上运行的解决方案:

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

此代码需要驻留在根目录中的.htaccess文件中,以便路由工作。我不了解代码的每一部分,但它有效。