【发布时间】:2021-08-27 16:50:55
【问题描述】:
关于服务器的虚拟主机设置有点奇怪,我有一个奇怪的问题。
我目前的设置:
<VirtualHost *:443>
DocumentRoot "/var/www/html/userA/standard/"
ServerName "server.com"
ServerAlias *.*.sub.server.com
Include /home/user.file.lc
Include /home/common.lc
</VirtualHost>
在 common.lc 中我有以下设置:
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule (.*) - [S=2]
RewriteRule (.*) /index.html?q=$1 [L]
<Directory "/var/www">
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
Header always set Access-Control-Expose-Headers "Content-Security-Policy, Location"
Header always set Access-Control-Max-Age "600"
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
在 user.file.lc 我有以下设置:
VirtualDocumentRoot "/var/www/html/%1/standard/"
该设置允许几个同事在 httpd 中使用相同的设置,只是文件结构不同。直到今天我们发现了一个奇怪的问题。
让我再详细说明一下:
如果您访问:
userA.test.server.com -> 一切正常。
userB.test.server.com -> 一切正常。
但如果您访问: userB.test.server.com/somepage -> 解决方案使用来自 userA 的 /index.html 响应,但其他一切似乎都是正确的。图片、css、JS 等等,都是从 userB 加载的。所有资产都称为根(例如 /dist/file/style.css)。其他静态文件似乎也加载正确。
似乎 index.html 仅在未指定其他参数时从 userB 加载。
有人知道为什么会这样吗?
【问题讨论】:
-
可能是因为您已将
DocumentRoot设置为指向/var/www/html/userA/standard/,所以如果您在哪里定义了服务器且未定义路由,您会去哪里?
标签: apache mod-rewrite virtualhost