Apache服务器上的PHP路由



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;
}

上传到运行Apache的Ionos Linux web服务器的相同代码不起作用:如果我从firefox浏览器访问根目录(例如http://mywebsites.org.uk/root-directory)我在浏览器中得到Resource not Found (404)。如果我在URL上附加一些内容(例如http://mywebsites.org.uk/root-directory/about)浏览器只是提供一些带有广告的页面,当服务器上没有与该路径相对应的内容时,您就会在该页面上获得广告(。如果你把"about"换成其他单词,也会发生同样的情况。

我尝试在根目录中使用以下.htaccess文件和index.php文件:

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

现在我得到了相同的结果http://mywebsites.org.uk/root-directory.这将在浏览器中显示Resource not Found (404),与以前一样。然而http://mywebsites.org.uk/root-directory/about或者任何替换"about"的单词我现在在浏览器中收到一条错误消息:

多项选择在此服务器上找不到您请求的文档名称(/index.php(。但是,我们发现了与您要求的文件名称相似的文件。可用文档:/index.html(通用基本名称(

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

我还尝试用FallbackResource /index.php替换.htaccess文件的内容。结果与我之前描述的完全没有.htaccess文件的情况相同。

我发现很难理解我的Ionos网络服务器。我不知道我是否可以更改Apache的配置文件,而且我对.htaccess文件了解甚少。我已经考虑过在这个问题上改用AWS,因为那里的文档似乎更全面。然而,如果我能解决这个问题,我宁愿不改变。基本上,我希望能够在运行Apache的Ionos服务器上构建一个PHP路由器。,

内置的PHP web服务器使您能够使用路由脚本,这是正确的。然而,在Ionos上托管之类的环境中,此功能通常由运行的任何web服务器执行。

不幸的是,我很难通过扫描他们的网站来找到Ionos提供的网络服务器。您确定他们正在运行Apache,并且启用了mod_rewrite和本地.htaccess覆盖吗?这些都可以解释为什么你在那里遇到问题。

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

我能建议的最好的办法是联系Ionos的技术支持或寻找他们提供给客户的任何技术文档。我甚至不知道他们是否或什么配置可以让你覆盖。

最新更新