Simply put, you are rewriting all
URL requests to a single script
file.
Therefore that script must *generate* a response for every possible URL that could be requested from your server.
It must *create* all image, css, and robots.txt data, and send it back, along with a correct HTTP response header, to the requesting client (e.g. browser or search engine robot).
The typical implementation is to exclude all images, media, css, and document requests from being rewritten. Rewrite only those requests to the script that it knows how to generate a response for.
For example, to exclude some of those filetypes, you could add a RewriteCond like this to your rule:
RewriteCond %{REQUEST_URI} !^/\.(gif|jpe?g|png|bmp|ico|css|js|pdf|doc|xls|mp3|wav|swf|flv|mp4|avi|wmv|mov)$ [NC]
Adjust the excluded "file types" list to suit your site; Anything that your script cannot generate must be excluded.
Or perhaps, you could use a less-specific RewriteCond that excludes *every* request that includes a "file type" extension, such as:
RewriteCond %{REQUEST_URI} !^/([^/]+/)*([^.]\.)+[a-z0-9]+$ [NC]
Jim