apache 端口自动配置定义了多个XAMPP本地站点

bkhjykvo  于 2022-11-16  发布在  Apache
关注(0)|答案(1)|浏览(102)

我目前有运行多个站点的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

bqjvbblv

bqjvbblv1#

您应该更改当前的策略,为每个站点定义一个明确的单独虚拟主机,使用apachehttp服务器中的备用虚拟主机,这是在配置中定义的第一个主机。然后,您可以使用重写规则的单个实现,该实现采用HTTP_HOST,并在内部将请求重写到本地文件系统中的相应文件夹(如果存在)。
在响应 * 所有 * 传入请求的单个http主机内,您可以沿着以下方法进行简单的重写:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule ^ /%1%{REQUEST_URI} [L]

您需要在apachehttp服务器中安装并激活重写模块(绝对标准)。这样的规则应该在http服务器的主机配置中实现,因为在我看来它是全局设置的一部分。您也可以使用 distributed 配置文件来(通常称为“.htaccess”),但这也带来了一些缺点。不过,您会在SO上找到无尽的此类设置示例。
上述规则会将 * 任何 * 传入请求重写到该单个虚拟主机的DOCUMENT_ROOT内的文件夹中。

/var/www/hosts/local-site-1/...
              /local-site-2/...
              /local-site-3/...
              /local-site-4/...

您仍然必须为每个站点设置本地名称解析,但这是每个站点的“hosts”文件中的一行。

相关问题