1

我使用这段代码:

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 存在于公共目录中。谢谢 :)

4

1 回答 1

1

如果我没记错的话:

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 的路径。

于 2013-03-15T14:12:52.457 回答