2017-01-30 11 views
0

Ive столкнулся с этой проблемой при попытке выполнить действие с контроллера в фреймворке fuelphp, я получаю сообщение 404 от nginx. Im способен видеть, например. localhost/index.php или просто localhost, но когда я пытаюсь получить доступ к контроллеру действия, например localhost/index.php/login/huehue, я получаю ошибку 404. Может кто-нибудь мне помочь? это приложение в настоящее время работает в Apache, я перед этой проблемой здесь, но все стало хорошо, когда я выполнилКак настроить правила перезаписи nginx для фреймворка?

a2enmod перепишема

я пытался искать эквивалентную конфигурацию для Nginx, и я нашел это как:

местоположение/{try_files $ $ URI URI//index.php?$args /index.php?q=$request_uri}

или это:

местоположение/{
переписан^/index.php?/$request_uri;}

, но они не работают для меня. Я провел несколько часов, пытаясь выяснить причину. Это мой фактический ВХост конфигурационный файла для моего сайта:

server { 
     listen 80; 
     listen [::]:80; 
     root /var/www/nginx/goutmeet; 
     index index.php index.html index.htm index.nginx-debian.html; 

     server_name goutmeet.local www.goutmeet.local; 

     location/{ 
     try_files $uri $uri/ /index.php?$args /index.php?q=$request_uri @handler; 
     } 
location ~ \.php$ { 
       include snippets/fastcgi-php.conf; 
       fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
     } 
location @handler { 
       rewrite^/index.php?/$request_uri; 
     } 
} 

Id любит знать, как решить эту проблему, так как с помощью Nginx иногда является лучшим вариантом, чем апач, и с этой проблемой с рамками fuelphp и не будучи в состоянии использовать эти два великих инструмента вместе ужасны. Спасибо заранее.

ответ

0

Директива try_files может иметь одно действие по умолчанию. У вас три! См. this document для получения дополнительной информации.

Выберите один:

try_files $uri $uri/ /index.php?$args; 
try_files $uri $uri/ /index.php?q=$request_uri; 
try_files $uri $uri/ @handler; 

Я не знаю, что соответствующее действие по умолчанию для вашего приложения. Все они отправляют запрос контроллеру PHP, но с разными наборами параметров.

Первый случай передает строку запроса; второй случай передает единственный параметр, содержащий URI запроса; и третий случай вызывает переписывание в названном местоположении.

+0

Извините, попробовал все три индивидуально и все тот же результат. И нет, не забыл перезагрузить/перезагрузить nginx. Спасибо за вашу помощь –

0

Я нашел обходной путь для этой проблемы, просто добавьте эту строку в конфигурационный файл:

error_page 404 /index.php; 

Я знаю, это не самое лучшее решение, но его было единственное, что работает для меня. По-моему, это приемлемо, поскольку все маршруты должны управляться инфраструктурой, а не веб-сервером.

Надеюсь, это поможет кому-то.