У меня возникают проблемы с переменными $ _GET с включенным mod_rewrite. У меня есть следующий .htaccess:
RewriteEngine On
RewriteRule ^/?Resource/(.*)$ /$1 [L]
RewriteRule ^$ /home [redirect]
RewriteRule ^([a-zA-Z]+)/?([a-zA-Z0-9/]*)$ /app.php?page=$1&query=$2 [L]
и app.php является:
<?php
require("controller.php");
$app = new Controller();
и controller.php является:
<?php
require("model.php");
require("router.php");
class Controller{
//--------Variables------------
private $model;
private $router;
//--------Functions------------
//Constructor
function __construct(){
//initialize private variables
$this->model = new Model();
$this->router = new Router();
$page = $_GET['page'];
//Handle Page Load
$endpoint = $this->router->lookup($page);
if($endpoint === false) {
header("HTTP/1.0 404 Not Found");
}else {
$this->$endpoint($queryParams);
}
}
private function redirect($url){
header("Location: /" . $url);
}
//--- Framework Functions
private function loadView($view){
require("views/" . $view . ".php");
}
private function loadPage($view){
$this->loadView("header");
$this->loadView($view);
$this->loadView("footer");
}
//--- Page Functions
private function indexPage(){
$this->loadPage("home");
}
private function controlPanel(){
echo "Query was " . $code;
/*
if($this->model->set_token($code)){
$user = $this->model->instagram->getUser();
}else{
echo "There was an error generating the Instagram API settings.";
}
*/
$this->loadPage("controlpanel");
}
private function autoLike(){
$this->loadPage("autolike");
}
private function about(){
$this->loadPage("about");
}
}
Так пример URL, который я мог бы is /app.php?page=controlpanel & query = null, который будет переписан как/controlpanel. Проблема в том, что у меня есть другая страница, которая отправляет форму в/controlpanel, что приводит к URL-адресу, например/controlpanel? Code = somecode.
То, что я пытаюсь сделать, это получить $ _GET ['code'], и я не могу этого сделать. Может ли кто-нибудь помочь? Извините заранее за небольшую свалку кода.
@jcsanyi Хорошо лаконичное описание поведения – Orangepill
@jcsanyi Я включил его в ответ – Orangepill