Apache RewriteCond для Lighttpd
Я хочу перенести некоторые сайты, работающие на Apache, на Lighttpd.
Может кто-нибудь помочь мне преобразовать это правило перезаписи в эквивалентное правило для Lighttpd:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Я читаю объяснение переписывания Lighttpd ( http://redmine.lighttpd.net/wiki/1/Docs:ModRewrite), но я не понимаю, как преобразовать это конкретное правило.
большое спасибо
1 ответ
Правила Apache, которые вы перечисляете, используют RewriteCond для принятия любого запроса, который не идет к директору (!-D) и который также не идет в файл (!-F) и перенаправляет его для передачи данных URL в индекс. php в качестве параметра "url". Он гарантирует сохранение любых других аргументов CGI (QSA) и не дает никаких дополнительных правил, если это правило соответствует (L).
Так http://yourserver.org/something-silly
будет идти к http://yourserver.org/index.ph?url=something-silly
а также http://yourserver.org/something-silly?q=search+terms
будет идти к http://yourserver.org/index.ph?url=something-silly&q=search-terms
Lighttpd имеет url.rewrite-if-not-file, который частично реализует это, но он перезапишет URL, если это каталог. Поэтому вам нужно будет добавить правила, чтобы НЕ переписывать URL-адреса, которые идут в известные действительные каталоги.