Назад | Перейти на главную страницу

преобразование перезаписи apache в перезапись nginx

У меня был проект, в котором мне пришлось перенаправить все не найденные файлы в index.php. Я сделал это в apache, поместив файл .htaccess в папку моего проекта. содержимое файла -

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

теперь я хотел то же самое в nginx. вот как выглядит мой nginx.conf

root   /usr/local/apache2/htdocs;
index  index.php index.html index.htm;
location /project/ {
            root   /usr/local/apache2/htdocs;
            index  index.php index.html index.htm;
            try_files $uri $uri/ index.php;
}

теперь, когда я делаю запрос вроде http://localhost/project/hello тогда этот запрос должен перейти к http://localhost/project/index.php но это говорит File not found.

Я подумал, что это сработает, потому что, поскольку root директива внутри блока местоположения отменяет root вне блока (хотя значения такие же), модуль перезаписи будет искать /usr/local/apache2/htdocs/project/index.php. Что мне здесь не хватает?

ОБНОВИТЬ

Эта конфигурация работает

root   /usr/local/apache2/htdocs;
location /project/ {
            index  index.php index.html index.htm;    #effectively root here is /usr/local/apache2/htdocs
            try_files $uri $uri/ /project/index.php;
 }

Но я не понимаю, почему это должно работать, потому что, как указано в документации Вот каталог, соответствующий в блоке местоположения, добавляется к значению root директива

 location /project/ {
             root   /usr/local/apache2/htdocs;
             index  index.php index.html index.htm;
-            try_files $uri $uri/ index.php;
+            try_files $uri $uri/ /project/index.php;
 }

Возможно, вам нужно было указать корень в URL? В противном случае ссылка для URL отсутствует. Сервер не может угадать, в каком каталоге он находился последним или в каком каталоге был указан пользователь. Если это не дает желаемого, прокомментируйте, и я разверну сервер, чтобы провести быстрый тест.