我有一个适用于localhost的mod_rewrite规则,该规则检查是否有请求的文件。可以在/img/dog.jpg
找到/static/img/dog.jpg
,并相应地重写该URL。看起来像这样:
RewriteCond %{DOCUMENT_ROOT}/static%{REQUEST_URI} -f
## ^^ is there a file at static/**?
RewriteRule ^(.*) static/$1 [L]
## ^^ if so, add static to the request.
它可以按预期在localhost上运行,但是不能在生产服务器上运行,不幸的是,我无法将mod rewrite日志设置为更详细,因此我陷入了500个错误(或者是?)。
之后只有2条规则:一个用于不重写而提供实际文件的规则,最后一个用于将所有其他请求重写为控制器文件的规则(这基于symfony htaccess):
# If the requested filename doesnt exist, add static.
# We only want to let Apache serve files and not directories.
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*) - [L]
# Rewrite all other queries to the front controller.
RewriteRule ^ app.php [L]
对于原因或如何自己调试的任何提示,我将不胜感激。