apache - 如果虚拟文档根不存在,如何设置默认文档根?
问题描述
我已经使用 vhost_alias 设置了虚拟文档根目录,如果存在子域目录,它会很好用。但如果子域目录不存在,则会引发 403 错误。如果子域不存在,我想设置一个默认目录。
当前的虚拟主机配置
<VirtualHost *:80>
ServerAlias *.domain.com
VirtualDocumentRoot /home/ubuntu/www/domain/%1
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "home/ubuntu/www/domain/*">
Options Indexes FollowSymLinks
AllowOverride All
Order Allow,Deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
我尝试使用错误文档
ErrorDocument 403 http://app.domain.com% {REQUEST_URI}?%{QUERY_STRING}
但它会更改浏览器网址。有没有办法在内部重定向?我也尝试过重写,但这似乎不起作用。
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT} !-d
RewriteRule %{DOCUMENT_ROOT} "/home/ubuntu/www/domain/app" [QSA,L]
解决方案
找到解决方案
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT} !-d
RewriteRule (.*) http://app.domain.com/%{REQUEST_URI} [P,L]
在 Directory 指令中添加这个解决了我的问题。对于 SSL 站点,将其包含在 Virutalhost 块中
SSLProxyEngine on
ProxyPassReverse / https://app.domain.com/
推荐阅读
- java - 弹性搜索健康检查失败 - spring boot/cloud
- javascript - 如何使用 cookie 将 div 隐藏 24 小时
- amazon-ses - SORBS 一遍又一遍地将 IP 列入黑名单
- mysql - Mysql用上一行的值更新列
- sql - 在 Postgres 中自我加入
- python - Python 3.6+ 从缺少键的解包字典中格式化字符串
- javascript - 在 MVC 4 中,jQuery Ajax 调用对我不起作用
- python - 检查几列中的日期并在python中创建一个新列
- r - 阻止表格添加小数位
- matplotlib - 使用 LogLocator 获取颜色图中的真实范围