我在 Ubuntu 24.04 服务器上使用 2 个虚拟主机来提供单独的服务(具有单独的文档根),访问方式为:
http://server1.domain.com 和 http://server2.domain.com,
但我被迫将它们都移动到一个虚拟主机,它们将位于共享相同文档根目录的不同子文件夹中。可通过以下方式访问它们: http://server.domain.com/service1 和 http://server.domain.com/service2。
显然,代码中所有文件链接都缺少子文件夹名称。我想知道如何在不更改所有代码的情况下解决这个问题。
情况如下:
/var/www - root folder
/var/www/service1
/var/www/service2
我已经通过以下方式构建了conf文件:
<VirtualHost *:80>
ServerName server.domanin.com
ServerAlias *.domain.com
<Directory /var/www/service1>
<Directory /var/www/service2>
DirectoryIndex service1_login_page.php
</Directory>
<Directory /var/www/service2>
DirectoryIndex service2_login_page.php
</Directory>
</VirtualHost>
我尝试在其中添加重写规则,例如:
RewriteRule #RewriteRule ^([^/]*)$ /service1/$1 [NC]
但是我没有成功......我应该如何构建我的conf文件?
在 URL 上使用规范斜杠:
根据 URL 路径名解析规则,任何这些超文本文档的默认基础都是特定的子目录。
请参阅 Apache 的 mod_dir 模块 了解配置指令。
毕竟所有链接都不需要代码中的子文件夹名称。
如果您在它们前面添加了前导斜杠,请在前导斜杠前面放置一个点(“.”)或完全删除前导斜杠。