我已经使用vhost_alias设置了虚拟文档根目录,如果存在子目录,它可以正常工作。但如果子域dir不存在则抛出403错误。如果子域不存在,我想设置默认目录。
当前的vhost conf
<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站点,在Virtualhost块中包含此项
SSLProxyEngine on
ProxyPassReverse / https://app.domain.com/