Apache服务器上的PHP路由

问题描述 投票:0回答:1

以下代码,以 index.php当我使用内置的php web服务器运行它时,给出了预期的路由行为。

<?php
$request = $_SERVER['REQUEST_URI'];
switch ($request) {
    case '/' :
        echo 'This is the Home Page';
        break;
    case '/about' :
        echo ' This is the About Page';
        break;
    default:
        echo 'Resource not Found (404)';
        break;
}

同样的代码上传到我的Ionos Linux网络服务器上运行Apache也不能工作。如果我从firefox浏览器访问根目录(例如 http:/mywebsites.org.ukroot-directory)我得到 Resource not Found (404)浏览器中。如果我在URL中添加一些内容(例如 http:/mywebsites.org.ukroot-directoryabout浏览器只会给出一些广告页面,当服务器上没有对应的路径时,你就会得到这些广告)。) 如果你把'about'换成其他词,也会出现同样的情况。

我尝试了以下方法 .htaccess 文件和根目录下的 index.php 文件。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php [QSA,L]

现在我得到同样的结果 http:/mywebsites.org.ukroot-directory. 这说明 Resource not Found (404) 浏览器中,和以前一样。然而,随着 http:/mywebsites.org.ukroot-directoryabout 或任何替代'about'的词,我现在在浏览器中得到一个错误信息。

多项选择 您请求的文件名(index.php)在本服务器上找不到。然而,我们找到了与您所要求的名称相似的文件。 可用的文件:index.html (通用基名)

当我点击 index.html (有超链接)我发现它在根目录上面的目录中,上面有 index.php 文件在其中。即它在mywebsites.org.uk目录下。很明显,这不是我想要的。

我也试着替换了 .htaccessFallbackResource /index.php. 结果和我没有的时候一样。.htaccess 文件,这是我之前描述的。

我发现很难理解我的Ionos网络服务器。我不知道我是否可以改变Apache的配置文件,我对.htaccess文件也没有什么了解。我曾想过在这个问题上改用AWS,因为那里的文档似乎更全面。然而,如果我可以解决这个问题,我宁愿不改变。基本上,我想在我的Ionos服务器上建立一个运行Apache的PHP路由器。

php apache .htaccess
1个回答
3
投票

你是对的,内置的PHP网络服务器可以让你使用一个路由脚本。然而,在像你在Ionos上的托管环境中,这个功能通常是由正在运行的web服务器来执行的。

不幸的是,我很难通过扫描他们的网站找到Ionos提供的Web服务器。你确定他们运行的是Apache,而且他们有以下功能 mod_rewrite 和当地 .htaccess 是否启用了覆盖?这些都可以解释为什么你在那里有问题。

从你对问题的描述来看,听起来你的网站可能没有正确配置它的文档根路径,或者它没有设置为使用 index.php 作为目录索引文件(例如通过 DirectoryIndex Apache配置设置)。)

我建议最好的办法是联系Ionos技术支持,或者寻求他们提供给客户的任何技术文档。我甚至不能告诉你他们是否允许你覆盖什么配置。

© www.soinside.com 2019 - 2024. All rights reserved.