Вот что я сделал для своей собственной среды (переменная окружения "STATIC
" очень сложна для вычисления, поэтому я удалил "сложную" часть, которая может быть слишком сложной на данный момент):
# if the site is static (i.e. xx.static.mydomain.com)
RewriteCond %{ENV:STATIC} 1
# Try to assign the extension into an EXT variable:
RewriteRule (.*)(\.(css|js|htc|pdf|jpg|jpeg|gif|png|ico)){1}$ $1$2 [NC,QSA,E=EXT:$3]
# (!) if it's an image...
RewriteCond %{ENV:EXT} (jpg|jpeg|gif|png|ico) [NC]
# ...no matter the extension, change it to 'img' :
RewriteRule (.*) - [QSA,E=EXT:img]
# if it's static...
RewriteCond %{ENV:STATIC} 1
# ...and its extension is not empty:
RewriteCond %{ENV:EXT} !^$
# ...and the filename exists in the good dir, i.e. :
# /web/htdocs/mydomain/css/xx.css
# /web/htdocs/mydomain/js/yy.js
# /web/htdocs/mydomain/img/aa.jpg
# /web/htdocs/mydomain/img/bb.gif
# and so on...
RewriteCond %{DOCUMENT_ROOT}/%{ENV:EXT}%{REQUEST_FILENAME} -f
# file exists => override filename and stop:
RewriteRule ^(.+) %{DOCUMENT_ROOT}/%{ENV:EXT}%{REQUEST_FILENAME} [QSA,L]
Таким образом, вы можете создать очень хорошую организацию, и когда вы получите один «статический» файл, если вы поместите правила выше в самом начале, они будут отфильтрованы правильно и никогда не будут перенаправлены на index.php
.
Таким образом, моя структура каталогов выглядит так (что, я думаю, очень чисто), и вы можете легко сделать то же самое:
/web/htdocs/
|-- css
|-- js
|-- img
| `-- prettyPhoto
| |-- ...
| `-- light_square
|-- js
| `-- openid
`-- htm