mod_rewrite

Моженков Евгений inbox at germes.ru
Tue Aug 7 15:08:45 MSD 2007


Здравствуйте!

Хочу переписать стандартный апачевский вариант:
 RewriteEngine on
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php?$1 [L]

Чтобы mode_rewrite отрабатывал на nginx

Ставлю:
location / {
 if (!-e $request_filename){
   rewrite  ^(.*)$  /index.php?$1  break;
 }
 ....
}

Все ок, идет редирект на основной скрипт.
Потом выясняется, что если запросить файл domain/panel.php, то он его не видит.

Пришлсь переписать для частного случая конфиг на такой:
if (!-e $request_filename){
  rewrite  ^(?!\/panel\.php)(.*)$  /index.php?$1  break;
}

Но это не выход из положения. В вирутальном хосте могут быть и другие файлы исполняемые

Помимо этого есть проблемка с логами:
- при реврайте через апач, когда приходит реквест, например, /p1/index.html, в логах мы его и видим.
- при реврайте через nginx в логах мы видим такую запись: /index.php?/p1/index.html

Для awstat такой вариант убивает всю красоту напрочь.

Подскажите, как можно грамотно решить данные вопросы?

С уважением, Моженков Евгений
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20070807/f8959ddb/attachment.html>


More information about the nginx-ru mailing list