Добрый день! Переношу сайт с виртуального хостинга на VDS. Вся проблема в том, что на хостинге работал Apache+php-cgi, а VDS настраиваю на Nginx+php-fpm. Соответственно все правила в .htaccess игнорируются.
На данный момент визуально удалось решить большинство проблем с mod_rewrite, но осталась одна существенная проблема: необходимо реализовать 301-Redirect с
site.ru/index.php и
site.ru/index.html на
site.ru/.
С index.html удалось решить внесением директивы:
location /index.html {
rewrite ^(.*)$ http://site.ru/ permanent;
}
Если сделать подобное с index.php, то получается циклическая переадресация.
Попробовал несколько вариантов из интернета. В частности:
if ($request_uri ~* "^(.*/)index\.php") {
return 301 $1;
}
Указанный выше способ работает, но некоторые скрипты на сайте работают неправильно, в частности поиск.
Есть ли ещё варианты конфигурации для реализации правильного редиректа?
P.S. на сайте с Apache, для реализации механизма переадресации были следующие директивы и все скрипты на сайте работали исправно:
##Redirect from index.php to root
RewriteCond %{THE_REQUEST} !^POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteCond %{SERVER_PORT}>s ^(443>(s)|[0-9]+>s)$
RewriteRule ^index\.php$ http%2://site.ru/ [R=301,L]
##END Redirect from index.php to root
##Redirect from index.html to root
RewriteCond %{THE_REQUEST} !^POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteCond %{SERVER_PORT}>s ^(443>(s)|[0-9]+>s)$
RewriteRule ^index\.php$ http%2://site.ru/ [R=301,L]
##END Redirect from index.html to root