0

初めてきれいなURLを作成しようとしましたが、これが私のシステムです。.htaccessはすべてをindex.phpにマップし、index.phpはURLを配列に分割し、caseステートメントを使用して続行方法を決定します.

.htaccess:

RewriteBase /

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^.*$ ./index.php

index.php:

$request = $_SERVER['REQUEST_URI'];
#split the path by '/'
$params = explode("/", $request);
var_dump($params);
if(!isset($params[1]) || $params[1] == "") {
    require_once('inc/content_default.php');
} else if ($params[1] == "posthandler"){
    require_once('bin/posthandler.php');
} else {
    switch($params[1]) {
        case "dashboard":
            include('inc/content_active.php?ign=' . $params[2]);
        break;
    }
}

問題は、URL が [ドメイン]/dashboard/AviateX14 の場合、次のエラーが発生することです。

Warning: include() [function.include]: Failed opening '/inc/content_active.php?ign=AviateX14' for inclusion (include_path='.:/opt/php-5.3/pear') in /home/u502822836/public_html/index.php on line 92

ファイルは存在します。問題はコードにあります。include('index.php') を入れてテストしましたが、それでも失敗するため、これを知っています。ファイルは inc/content_active.php に存在します。

私は何をしているのですか?:(

編集: $params の var_dump は:

array(3) { [0]=> string(0) "" [1]=> string(9) "dashboard" [2]=> string(9) "AviateX14" } 
4

2 に答える 2

1

include()実際にはリクエストされていないため、クエリ文字列を php に含めることはできません。サーバー変数にパラメーターを自分で入力する必要があります。

switch($params[1]) {
    case "dashboard":
        $_GET['ign']=$params[2];
        include('inc/content_active.php');
    break;
}
于 2015-01-23T15:19:51.953 に答える