1

mod_rewrite が有効な状態で $_GET 変数を取得する際に問題が発生しています。次の .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");
    }
}

したがって、/app.php?page=controlpanel&query=null は /controlpanel に書き換えられる URL の例です。私が抱えている問題は、フォームを /controlpanel に送信する別のページがあり、その結果、/controlpanel?code=somecode のような URL になることです。

私がやろうとしているのは $_GET['code'] を取得することですが、これを行うことができないようです。誰でも助けることができますか?少しのコード ダンプがあることをあらかじめお詫びします。

4

1 に答える 1

4

変化する

RewriteRule ^([a-zA-Z]+)/?([a-zA-Z0-9/]*)$ /app.php?page=$1&query=$2 [L]

RewriteRule ^([a-zA-Z]+)/?([a-zA-Z0-9/]*)$ /app.php?page=$1&query=$2 [L,QSA]

QSAはクエリ文字列を追加することです

ドキュメントから

「置換 URI にクエリ文字列が含まれている場合、RewriteRule のデフォルトの動作は、既存のクエリ文字列を破棄し、新しく生成されたものに置き換えることです。[QSA] フラグを使用すると、クエリ文字列が結合されます。」

于 2013-07-24T05:19:44.803 に答える