Контроллер CakePHP, URL не найден на сервере

Я пишу контроллер в CakePhp-2.9 с именем API для доступа извне. Код контроллера:

class APIController extends AppController
{
var $name = 'API';
var $cache_dir = 'img/cache';
var $cache_width = 400;
public $msgs = array();

public function beforeFilter()
{
    parent::beforeFilter();
         $this->Auth->allow('ecall_request','ecall_callback','testlog','ecall_request_test','ecall_callback_test');

} 


public function ecall_request()
{   


Cache::write("test_request".time(),$this->request->data);
if($this->request->is('post'))
{
 // my code here
}
 }
}

И я успешно проверил " http://localhost/dentech/api/ecall_request" на POSTMAN, но когда я загружаю его на сервер по адресу https://dentech.com/api/ecall_request он не получает доступа и выдает ошибку 404.

htaccess код:

<IfModule mod_rewrite.c>
RewriteEngine on
# Uncomment if you have a .well-known directory in the root folder, e.g. for the Let's Encrypt challenge
# https://tools.ietf.org/html/rfc5785

RewriteCond %{HTTPS} off
 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#RewriteRule ^(\.well-known/.*)$ $1 [L]
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]

1 ответ

Решение

Обновлено из комментариев: Причина ошибки 404 заключается в том, что имя контроллера в URL-адресе должно быть в верхнем регистре. Вместо

https://dentech.com/api/ecall_request

Вам нужно использовать

https://dentech.com/API/ecall_request

Тот факт, что он работает на локальном хосте, но не на сервере, является разницей в операционной системе. Windows (часто используется локально) не чувствительна к регистру, в то время как Linux (обычно серверная ОС) чувствительна к регистру.

Другие вопросы по тегам