如何解决关于有点奇怪的 VirtualHost 的奇怪问题
我有一个奇怪的问题,关于服务器的一个有点奇怪的 VirtualHost 设置。
我当前的设置:
<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 加载。
有人知道为什么会这样吗?
解决方法
原因
userB.test.server.com/somepage -> (some other resource "/index.html from userA")
是因为你的重写条件是这样的。
RewriteCond %{DOCUMENT_ROOT}/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule (.*) - [S=2]
RewriteRule (.*) /index.html?q=$1 [L]
它总是重定向到用户 A 主页的原因也是因为您指定将 DocumentRoot
设置为用户 A 的目录
DocumentRoot "/var/www/html/userA/standard/"
^ (there)
我建议您删除此行
DocumentRoot "/var/www/html/userA/standard/"
因为您已经指定了 VirtualDocumentRoot
。
我也建议你改变
'userA' to 'usera'
and
'userB' to 'userb'
原因是域名不区分大小写。确实,主机名(有时)区分大小写,以避免混淆,只需将它们全部设为小写即可。 此外,我在自己的 Apache 2.2.46 版本(在 linux 4.9.117+ armv7l Android 上)上对其进行了测试,发现所有大写字符都转换为主机名中的小写形式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。