根据使用的地址将流量重定向到不同的网页

时间:2016-01-07 21:22:41

标签: php apache redirect webserver

我有一个在我的树莓派上运行的网络服务器,我正在将它用于多个项目。我可以使用from-ip-addrss \ project-name.php轻松访问不同的页面。我想要消除IP地址,发现我可以在我的路由器上设置域名。所以http:/ projector或projector.local重定向到树莓派。问题是它总是进入默认页面。我可以设置http:/ ProjectA和http:/ ProjectB但它们都转到index.php。是否有一种方法在PHP基于用于到达那里的网址重定向。所以index.php会重定向到projectA.php或projectB.php,具体取决于使用的是哪个url?我查看了$ _SERVER和$ _POST,但他们似乎没有正确的信息。一些研究让我相信apache可以做到这一点,但我有经验配置apache。

1 个答案:

答案 0 :(得分:1)

您可以通过检查$ _SERVER ['HTTP_HOST']在PHP中执行此操作,但该值可以由发出请求的人操纵。因此,我可以在指定标题http://ProjectA或类似内容时访问host: ProjectB,您会认为它是ProjectB
实际上,如果查看HTTP请求,HTTP_HOST是确定域名的唯一方法。因此,如果您在PHP或Apache中执行此操作并不重要。

在Apache中,您可以通过为apache启用vhosts mod来实现。如果你正在运行linux,命令行可能就像这个a2enmod vhosts_alias。这将允许您配置由host HTTP标头和IP确定的不同主机。每个虚拟主机都指向一个单独的目录。您可以有2个主机指向同一目录,但您必须修改目录属性,如下所示:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName ProjectA
    ServerAlias www.ProjectA #you can skip this line if it doesn't apply
    DocumentRoot /var/www/foo
    <Directory "/var/www/foo">
        DirectoryIndex ProjectA.php
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

我没有尝试以不同的方式为2个不同的主机配置相同的目录。我的直觉说应该有效,但可能没有。

以下是有关如何在Ubuntu上配置虚拟主机的指南。 https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts

我不知道Raspberry Pi有多么不同。但是apache配置文件应该具有完全相同的语法和规则。只有路径和命令可能不同。