以下代码,以 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目录下。很明显,这不是我想要的。
我也试着替换了 .htaccess
锉 FallbackResource /index.php
. 结果和我没有的时候一样。.htaccess
文件,这是我之前描述的。
我发现很难理解我的Ionos网络服务器。我不知道我是否可以改变Apache的配置文件,我对.htaccess文件也没有什么了解。我曾想过在这个问题上改用AWS,因为那里的文档似乎更全面。然而,如果我可以解决这个问题,我宁愿不改变。基本上,我想在我的Ionos服务器上建立一个运行Apache的PHP路由器。
你是对的,内置的PHP网络服务器可以让你使用一个路由脚本。然而,在像你在Ionos上的托管环境中,这个功能通常是由正在运行的web服务器来执行的。
不幸的是,我很难通过扫描他们的网站找到Ionos提供的Web服务器。你确定他们运行的是Apache,而且他们有以下功能 mod_rewrite
和当地 .htaccess
是否启用了覆盖?这些都可以解释为什么你在那里有问题。
从你对问题的描述来看,听起来你的网站可能没有正确配置它的文档根路径,或者它没有设置为使用 index.php
作为目录索引文件(例如通过 DirectoryIndex
Apache配置设置)。)
我建议最好的办法是联系Ionos技术支持,或者寻求他们提供给客户的任何技术文档。我甚至不能告诉你他们是否允许你覆盖什么配置。