我们假设文件系统中有一个文件,如下所示:
/documentroot/domains/foo/files/resource.html
我想编写规则,以便http://foo.example.com/resource.html
为文件/domains/foo/files/resource.html
提供服务。但是,如果请求网址为http://bar.example.com/resource.html
,则应该在/domains/bar/files/resource.html
内查看。到目前为止我所做的就是这个,它可以正常工作:
RewriteEngine On
RewriteCond "%{DOCUMENT_ROOT}/domains/foo/%{REQUEST_URI}" -f
RewriteRule ^ domains/foo/%{REQUEST_URI} [QSA,L]
对于任何域名,我如何概括这一点?我正在考虑将正则表达式应用于%{SERVER_NAME}
变量,但我找不到实现此目的的方法。
答案 0 :(得分:2)
您可以使用此规则:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\. [NC]
RewriteRule !^domains/ domains/%1/files%{REQUEST_URI} [L,NC]