我使用这段代码:
RewriteCond public/%{REQUEST_FILENAME} -f [OR]
RewriteCond public/%{REQUEST_FILENAME} -d
RewriteRule public/.* - [L]
它不起作用。
例如,我希望该 URL: http://example.com/style.css 像这样被 Interpeted
公共/style.css
如果 style.css 存在于公共目录中。谢谢 :)
我使用这段代码:
RewriteCond public/%{REQUEST_FILENAME} -f [OR]
RewriteCond public/%{REQUEST_FILENAME} -d
RewriteRule public/.* - [L]
它不起作用。
例如,我希望该 URL: http://example.com/style.css 像这样被 Interpeted
公共/style.css
如果 style.css 存在于公共目录中。谢谢 :)
如果我没记错的话:
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -d
RewriteRule public/.* - [L]
编辑
%{REQUEST_FILENAME}
包含所请求文件的完整路径。所以例如/var/www/example.com/index.html
。所以添加public/
到前面将导致public/var/www/example.com/index.html
,它永远不存在。因此,您使用%{DOCUMENT_ROOT}
which contains/var/www/example.com
和%{REQUEST_URI}
which contains/index.html
还要注意,-f
需要-d
一个完整的路径,而不仅仅是一个相对于 wwwroot 的路径。