Apacheのmod_rewriteを使用してより良いURLを作成しようとしています。すべてのものを単一のindex.phpページにリダイレクトして、$ _SERVER ['REQUEST_URI']を解析し、適切なページを含めます。
のRewriteRuleのためのコードは以下の通りです:
Options +FollowSymLinks
RewriteEngine on
RewriteRule \b.*\b index.php
私は、URLの操作を処理するためのURLクラスを作って、その中に、この機能は、URLを取得することがあります:
public function get_url(){
$url = strtolower($_SERVER['REQUEST_URI']);
$url = explode("/", $url);
array_shift($url);
print_r($url);
return $url;
}
それしかし、問題があります:explode関数は、/文字があるときに最後の配列インデックスをnullにします。これは、私を煩わし、正しいページを含めると事態をより複雑にします。それは、次のようないくつかの格安の操作を行って、修正が容易であるべき:
$url = trim(str_replace(" ", "/", $url));
$url = explode(" ", $url);
しかし、私は以外の方法で($ _SERVER [「REQUEST_URI」]のコピーである)の$ url変数を変更しようとするたびに私は上記の書いたものを、私はこのエラーを取得する:
The page isn't redirecting properly
Firefox has detected that the server is redirecting the request for this address in a way that will never complete.
This problem can sometimes be caused by disabling or refusing to accept cookies.
私の推測では、何らかの形で$ _SERVER [「REQUEST_URI」]は、参照によって渡されている、と私はApacheサーバができない文字列を操作しようとするということですマッチを見つけてバナナに行くのですが、なぜこれが起こっているのかわかりません(なぜ、/区切り記号で爆発しても問題ありませんが、/文字を空白に変えて爆発しないのです)辛抱強く、それをいかに修正するか。