Убираем /index.php в nginx

У меня есть сайтик, где главная страничка статическая, а весь динамический контент генерируется через index.php, на нем потребовалось, чтобы не дублировались страницы /index.php, /index.html и /. Вот как это сделать в nginx

location ~ ^/index.(html|php)$ {
  if ($request_uri ~ ^/index.(html|php)) {
    rewrite ^.*$ / permanent;
  }
}

Теперь запросы на /index.html и /index.php будут давать 301 редирект на корень сайта, а сам сайт целиком будет работать как и прежде.

query string и rewrite в nginx

На одном из сайтов потребовалось сделать 301 редирект всех URL на индекс, я прописал в конфиг вот такую конструкцию:

if ( !-e $request_filename ) {
  rewrite ^.*$ / permanent;
}

Увы, URL, к которым добавлялись какие-то параметры типа http://example.com/url1?test=1 редиректились не совсем правильно: http://example.com/?test=1. Оказалось, чтобы этого избежать, подправить нужно совсем чуть-чуть:

if ( !-e $request_filename ) {
  rewrite ^.*$ /? permanent;
}

И все, редирект теперь срабатывает на http://example.com/

Настройки nginx для популярных движков

Только сегодня обнаружил, что на nginx.org существует целый раздел с настройками для популярных движков. Жаль, что мало, интересно посмотреть на различия со своими настройками.