1

クリーンな URL を使用すると、クエリ文字列が GET 配列に追加されないのはなぜですか? 例えば。を使用/foo/bar?stack=overflowし、$_GET['stack']変数が空です。

私はこのコードできれいな URL を実装しています:

$request = rawurldecode($_SERVER['REQUEST_URI']);

// Extracts the index.php file path (eg. /my_app)
// There is no need to specify the path to index.php as the script handles it
$path_to_index = str_ireplace($_SERVER['DOCUMENT_ROOT'].'/', '', $_SERVER['SCRIPT_FILENAME']);
$path_to_index = str_ireplace('/'.basename($_SERVER['SCRIPT_FILENAME']), '', $path_to_index);

    // Get rid of the path to index.php
$request = str_ireplace($path_to_index, '', $request);

// Get rid of index.php in the URL
$request = str_ireplace(basename($_SERVER['SCRIPT_FILENAME']), '', $request);

// Our URL is now clean so we can explode
$request = explode('/', $request);

// Delete empty and reindex
$request = array_values(array_filter($request)); 
4

3 に答える 3

2

.htaccessでRewriteRulesを使用する場合

RewriteRuleあなたの行の終わりに[QSA]このように置きます:

RewriteRule (.*) index.php?stuff=$1 [QSA]

QSAフラグ情報: http: //httpd.apache.org/docs/2.2/rewrite/flags.html#flag_qsa

于 2012-07-06T21:27:32.143 に答える
0

グローバル変数名にアンダースコア ("_") を使用することを忘れている可能性があります。

$_GET['stack'] を使用してみてください。

于 2012-07-06T21:37:29.297 に答える
0

たぶん、あなたが $_GET を使用していないのは b/c ですか?? GET は変数ではありませんが、問題なく動作するはずです...

于 2012-07-06T21:26:38.640 に答える