Переписать правило за исключением статического контента - PullRequest
2 голосов
/ 02 февраля 2010

Мой текущий файл htaccess выглядит так:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

Это прекрасно работает для меня, однако я хочу попытаться уменьшить нагрузку на сервер, поэтому я добавил эту строку чуть ниже строки RewriteEngine On, чтобы остановить обработку при загрузке статического содержимого:

RewriteCond %{REQUEST_FILENAME} !.*jpg$|.*gif$|.*png$|.*css$|.*js$|.*txt$|.*ico$|.*pdf$ [NC]

Это самый эффективный способ написания? Спасибо

1 Ответ

3 голосов
/ 02 февраля 2010

В строке 2 вы уже проверяете наличие запрошенного файла (!-f), поэтому нет необходимости добавлять вашу строку, но вы можете заменить строку 2 новым условием перезаписи, если хотите избежать возврата других файлы, такие как .php файлы. Производительность Я не думаю, что это ускорит работу Apache, и в вашем веб-приложении есть еще одна дыра в производительности.

Тем не менее, ваш шаблон, вероятно, не тот, который вы ожидали, как, например, .*jpg$ соответствует mysuperjpg. Возможно, вы ищете \.jpg$, потому что. это специальный символ для регулярных выражений. Вы можете сделать это:

RewriteCond %{REQUEST_FILENAME} !\.(jpg|gif|png|css|js|txt|ico|pdf)$ [NC]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...