2017-12-20 11 views
1

に渡す私.htaccessは次のようになります。URIの一部を削除し、その後、現在のスクリプト

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [QSA] 

すべてのURIは、それを解析し、ものを返すPHPスクリプトに渡されます。

ここでは、呼び出されるバージョンに応じてURIを処理する別のスクリプトが存在するバージョン管理システムを実装したいと考えています。私は/v1/countries/es/usersを呼び出す場合

  • 、私はその後、私はURI /users/314/settingsスクリプトv2.php
  • に渡さたい、私は /v2/users/314/settingsを呼び出す場合、スクリプト v1.php
  • にURI /countries/es/usersを渡したい:ある

私は何かをしようとしました

RewriteRule ^/?v(\d)/.*$ v$1.php [QSA] 

これはバージョン固有のスクリプトに実行を送信しますが、スクリプトに渡されたときに/v1/というURIの最初の部分を取り除きたい、つまり私はスクリプトに初期バージョンパート。 どうすれば実現できますか?

答えて

0

明らかにapache document: Apache mod_rewrite Introductionで説明しています。

あなたは、それをパラメータとして渡すと、最初のバージョンの部分なしでURIの一部を取得するために$_GET['route']を使用することができます。

RewriteRule ^/v(\d)/(.*)$ v$1.php?param1=$2 [QSA,L] 
RewriteRule ^/v(\d)/(.*)/(.*)$ v$1.php?param1=$2&param2=$3 [QSA,L] 
+0

これは、クエリパラメータ内のパスの全体を置きます。むしろ単純ですが、URIパスがクエリパラメータではなくURIパスとして取得されるソリューションがあるかどうかを知りたいと思います。 – Jago

+0

あなたはPHPを使って独自のルータを作成し、URLを解析することができます。 'parse_url($ _ SERVER ['REQUEST_URI']);' – Ben

関連する問題