我目前有运行多个站点的XAMPP,配置虽然简单,但添加的内容越多就越混乱。
目前我有一个index.php,它列出了我的/www/文件夹中的所有目录,并提供了一个到每个站点的链接,以便本地/内部访问。但是,为了设置这些,我需要:
创建文件夹:
/.../www/site4
编辑主机:
127.0.0.1 localhost-site1
127.0.0.1 localhost-site2
127.0.0.1 localhost-site3
127.0.0.1 localhost-site4
编辑HTTPD.CONF
Listen 80
<VirtualHost *:80>
DocumentRoot "C:/.../www/localhost-site4"
ServerName localhost-site4
ServerAlias localhost-site4
ServerAdmin root@example.com
</VirtualHost>
PHP网站索引:
<ul>
<?php
$dirs = array_filter(glob('*'), 'is_dir');
foreach ($dirs as $key => $value) {
echo "<li><a href='http://localhost-".$value."/'>".$value."</a></li><br/>";
}
?>
</ul>
我不想到处都有一个庞大的站点列表,而是想更好地实现自动化***,并能够从LAN上的不同设备访问这些站点***,所以我想我可以使用不同的端口。
主机更简单:
127.0.0.1 localhost
然而,HTTPD配置变得更加复杂,因为您必须监听每个端口
Listen 80
Listen 8001
Listen 8002
Listen 8003
<VirtualHost *:8001>
DocumentRoot "C:/.../www/localhost-site1"
ServerName localhost:8001
</VirtualHost>
<VirtualHost *:8002>
DocumentRoot "C:/.../www/localhost-site2"
ServerName localhost:8002
</VirtualHost>
<VirtualHost *:8003>
DocumentRoot "C:/.../www/localhost-site3"
ServerName localhost:8003
</VirtualHost>
等等
有没有一种方法可以通过php使用文件夹结构(例如/www/site1-8001/
以某种方式自动Listen on 8001
,创建一个到http://site1:8001/
的链接,并添加VirtualHost
行
1条答案
按热度按时间bqjvbblv1#
您应该更改当前的策略,为每个站点定义一个明确的单独虚拟主机,使用apachehttp服务器中的备用虚拟主机,这是在配置中定义的第一个主机。然后,您可以使用重写规则的单个实现,该实现采用HTTP_HOST,并在内部将请求重写到本地文件系统中的相应文件夹(如果存在)。
在响应 * 所有 * 传入请求的单个http主机内,您可以沿着以下方法进行简单的重写:
您需要在apachehttp服务器中安装并激活重写模块(绝对标准)。这样的规则应该在http服务器的主机配置中实现,因为在我看来它是全局设置的一部分。您也可以使用 distributed 配置文件来(通常称为“.htaccess”),但这也带来了一些缺点。不过,您会在SO上找到无尽的此类设置示例。
上述规则会将 * 任何 * 传入请求重写到该单个虚拟主机的
DOCUMENT_ROOT
内的文件夹中。您仍然必须为每个站点设置本地名称解析,但这是每个站点的“hosts”文件中的一行。