404 Not Found在此服务器上找不到请求的URL / xxxxx

时间:2018-05-23 11:23:19

标签: apache

我需要帮助,我已经经历了几个类似的问题,以及它们是如何解决的,看起来我的工作真的很痛苦。

我使用了Turnkey Linux Appliance [OrangeHRM]并且我想使用它的Apache服务器来托管另一个站点/软件[Sentrifugo]并且它非常困难,每次我托管它时只显示默认站点。

我已经在堆栈溢出中阅读了几个类似的问题但它没有用,我需要有人来看看我的案例。

期待真诚的赞赏

以下是grep "<VirtualHost" /etc/apache2/sites-enabled/*

的输出
/etc/apache2/sites-enabled/adminer.conf:<VirtualHost *:12322>
/etc/apache2/sites-enabled/orangehrm.conf:<VirtualHost *:80>
/etc/apache2/sites-enabled/orangehrm.conf:<VirtualHost *:443>
/etc/apache2/sites-enabled/sentrifugo2.conf:<VirtualHost *>

1 个答案:

答案 0 :(得分:0)

早上好,根据我们讨论的内容:

现在您正在使用http:// IP / sentrifugo2 / ...

  • 使用IP地址,Apache将按顺序检查VH并使用匹配的第一个VH。
  • 如果您要求http:// IP / ...,因为这是端口80(http的默认值),Apache将匹配第三个VH(*:80一个)。< / LI>
  • 但是你想要第4个,*

解决方案:

  1. 工作,但不是最好的:使用端口定义第4个VirtualHost。 <VirtualHost *:80>。然后修改VH出现在Apache中的顺序,并将参考值放在orangehrm.conf之前。但可以创建一个新问题,其中orangehrm.conf不再可用...继续阅读...
  2. 最佳:使用名称虚拟主机:

    <VirtualHost *:80>
        ServerName orangehrm.conf
        ...OTHER CONFIGURATION DIRECTIVES...
    </VirtualHost>
    <VirtualHost *:80>
        ServerName sentrifugo
        ...OTHER CONFIGURATION DIRECTIVES...
    </VirtualHost>
    
  3. 所以你看,这样,Apache可以使用请求的域(或名称)在两个*:80之间进行区分。在客户端系统上,在/ etc / hosts中,定义两个名称:

    10.0.0.18     orangehrm.conf
    10.0.0.18     snetrifugo
    

    因此,当您输入http://orangehrm.conf http://sentrifugo时,Apache会知道您想要哪一个。

    注意:在Apache 2.4上,这没有问题。在Apache 2.2上,您需要指定NameVirtualHost指令(请参阅Apache文档)。

    1. 再次有效,但不是最好的:可能不适合你。您可以使用不同的IP地址在VH之间进行拆分。防爆。 10.0.0.18是orangehrm.conf并使用<VirtualHost 10.0.0.18:80>。然后10.0.0.19是sentrifugo,因此使用<VirtualHost 10.0.0.19:80>(使用Listen 10.0.0.19:80)。但是,您必须允许在主机上配置额外的IP地址...

    2. 另一种可能性:拆分端口。 <VirtualHost *:80>适用于orangehrm.com,<VirtualHost *:81>适用于sentrifugo。为此,您需要指定http://10.0.0.18:81/sentrifugo。这还需要Listen *:80Listen *:81

    3. 总之,Apache需要一种方法来了解您想要哪一个。它可以决定:IP,端口,名称。名称是最灵活的。

      使用IP地址的恕我直言不是要走的路。它可以在简单的设置中工作,但很快就会限制你。使用域名。在这里,我向您展示了如何在您的本地主机文件中执行此操作,&#34;最好的&#34;要做的就是在DNS中设置它们。