2012-05-03 9 views
1

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サーバができない文字列を操作しようとするということですマッチを見つけてバナナに行くのですが、なぜこれが起こっているのかわかりません(なぜ、/区切り記号で爆発しても問題ありませんが、/文字を空白に変えて爆発しないのです)辛抱強く、それをいかに修正するか。

答えて

0

問題はあなたのPHPに全く接続されていません。

あなたは単にApacheにそのリクエストを何度も書き直すように指示しただけで、Firefoxのステートメントが投稿されます。 index.phpのがすでにアドレス指定されたとき、あなたは条件を追加する必要がリライトを回避するために

RewriteCond %{REQUEST_URI} ^!(index\.php.*) 
RewriteRule \b.*\b index.php 

URIが「index.phpを」で始まるので、ないていない場合は、ルールにのみ適用この方法まだ

よろしく、

STEFAN

を書き直されました
関連する問題