2015-03-28 3 views
1

Я наткнулся на рамки Slim и играл с ней. Я столкнулся с проблемой 404. С приведенным ниже кодом: Я знаю, что это имеет какое-то отношение к URL-адресу, но я не совсем уверен, как решить эту проблему. Должен ли я определять URL-адрес для «профилей»?Slim Framework - 404 Страница не

также мои каталоги выглядеть следующим образом:

включают

  • dbhandler.php

  • config.php

  • dbConnect.php

LIB

  • Тонкий

v1

  • .htaccess
  • index.php

Проблема в этом коде: mysite.com//parentfolder/v1/profiles бросает 404

$app->post('/profiles', 'authenticate', function() use ($app) { 
      // check for required params 
      verifyRequiredParams(array('gender')); 

      $response = array(); 
      $gender = $app->request->post('gender'); 

      global $user_id; 
      $db = new DbHandler(); 

      // creating new task 
      $profile_id = $db->createUserProfile($user_id, $gender); 

      if ($profile_id != NULL) { 
       $response["error"] = false; 
       $response["message"] = "Profile created successfully"; 
       $response["profile_id"] = $profile_id; 
       echoRespnse(201, $response); 
      } else { 
       $response["error"] = true; 
       $response["message"] = "Failed to create profile. Please try again"; 
       echoRespnse(200, $response); 
      }    
}); 

.htaccess

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L] 

У меня также есть эта функция, которая работает просто отлично.

$app->post('/register', function() use ($app) { 
      // check for required params 
      verifyRequiredParams(array('name', 'email', 'password')); 

      $response = array(); 

      // reading post params 
      $name = $app->request->post('name'); 
      $email = $app->request->post('email'); 
      $password = $app->request->post('password'); 

      // validating email address 
      validateEmail($email); 

      $db = new DbHandler(); 
      $res = $db->createUser($name, $email, $password); 

      if ($res == USER_CREATED_SUCCESSFULLY) { 
       $response["error"] = false; 
       $response["message"] = "You are successfully registered"; 
      } else if ($res == USER_CREATE_FAILED) { 
       $response["error"] = true; 
       $response["message"] = "Oops! An error occurred while registereing"; 
      } else if ($res == USER_ALREADY_EXISTED) { 
       $response["error"] = true; 
       $response["message"] = "Sorry, this email already existed"; 
      } 
      // echo json response 
      echoRespnse(201, $response); 
     }); 
+0

Не могли бы вы использовать [этот .htaccess] (http://stackoverflow.com/a/28409423/1992780) и проверить, работает ли он? –

+0

Посмотрите на '$ app-> post ('/ profiles', 'authenticate', ...'. Я знаю, что 'authenticate' является именем функции для вашего промежуточного программного обеспечения. Итак, можете ли вы также опубликовать свой' authenticate' код? – Alfa

ответ

0

Предполагая /parentfolder/v1/ является физической папкой, в которой живет ваш код. Добавьте в свой .htaccess.

RewriteBase /parentfolder/v1/ 

Я не уверен, где ENV:BASE приходит. Если вы не уверены, что должны его использовать, используйте правила перезаписи, как указано в документации Slim.

RewriteEngine On 
RewriteBase /parentfolder/v1/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [QSA,L] 
Смежные вопросы