2009-07-22 38 views
0

私の質問とうまくいかない事オフのセグメントを取得することができます:は、どのように私は私は2つのセグメントを持っている場合</p> <p>が</p> <p>例であるURI

をwww.xxx.nl/products/idし、私はhtaccessを

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

でこれを持っていることは解決策がある、またはホストすることにより、このcaustある

事前に感謝、リチャード

答えて

0

要求されたURIのパスとクエリは$_SERVER['REQUEST_URI']です。あなたはこれでセグメントを取得することができます:

$_SERVER['REQUEST_URI_PATH'] = preg_replace('/\?.*/', '', $_SERVER['REQUEST_URI']); 
$segments = explode('/', ltrim('/', $_SERVER['REQUEST_URI_PATH'])); 
+0

なぜ変数変数を取得するのかわかりません – Richard

+0

リクエストされたURLをパラメータに渡す必要はありません。 – Gumbo

+0

いいえ、それは私が望むものではありません。論理的なアドレスが必要です。 – Richard

2

あなたは任意のURLを解析し、関連する部分(それが有効なURLだと仮定します)にそれを区切るためにparse_url機能を使用することができます。

+0

ありがとう、私はwebserviceのためにそれが必要でした。 私はまだ完全に自分の頭を得ることができません – Richard

0

index.phpに渡されるURLには、ホスト名、ポート、またはクエリ文字列は含まれません。 (出典:mod_rewrite docs)。

URLの残りの部分はスラッシュで区切られているため、explodeを使用して配列に変換できます。

$uri_segments = explode('/', $_GET['url']); 

注:実際に配列に含まれる内容は、RewriteRuleの発生場所によって異なります。 .htaccessファイルまたは<Directory>ブロックにある場合、一致するブロックの一部が失われます(URL内の現在のディレクトリの前にあるもの)。

+0

ありがとう、私はそれを持っています 私は今すぐ最初のセグメントのためのクラスを使用することができますメソッドの2番目の変数は、 上記の問題は、スラッシュで始まらなかったCSSファイルに関連していました。今、私は残りを考え出すことができます。 – Richard

関連する問題