我有一个在我的树莓派上运行的网络服务器,我正在将它用于多个项目。我可以使用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。
答案 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配置文件应该具有完全相同的语法和规则。只有路径和命令可能不同。