2017-12-20 17 views
1

현재 내 .htaccess은 다음과 같습니다에 전달 :제거 부분은 다음 스크립트

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

모든 URI는 다음을 분석하고 물건을 반환하는 PHP 스크립트에 전달됩니다.

이제는 호출되는 버전에 따라 URI를 처리하는 다른 스크립트가있는 버전 관리 시스템을 구현하려고합니다.

즉 : 나는 /v1/countries/es/users를 호출하는 경우

  • , 나는 내가 /v2/users/314/settings를 호출하는 경우, 그때는 URI /users/314/settings 스크립트에 전달하고자하는 스크립트 v1.php
  • 에 URI /countries/es/users를 전달하려는 v2.php

같은 것을 시도했습니다.

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

이것은 버전 특정 스크립트로 실행을 보내지 만, 스크립트에 전달할 때 /v1/ URI의 초기 부분을 제거하려고합니다. 즉, 스크립트가 초기 버전없이 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