2017-12-20 2 views
1

Zur Zeit mein .htaccess wie folgt aussieht:Entfernen Teil der URI, übergeben Sie dann auf Skript

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

Alle URIs werden an das PHP-Skript übergeben, die es dann Sachen und gibt parst.

Jetzt möchte ich ein Versionsverwaltungssystem implementieren, in dem je nach der Version unterschiedliche Skript-URIs behandelt werden.

Das heißt:

  • wenn ich /v1/countries/es/users nennen, ich die URI /countries/es/users an das Skript v1.php
  • übergeben wollen, wenn ich /v2/users/314/settings nennen, dann will ich die URI /users/314/settings an das Skript übergeben v2.php

Ich versuchte, etwas wie

zu tun

, die Ausführung an die versionsspezifische Skript schicken würde, aber ich will noch die /v1/ Anfangsteil der URI, wenn an das Skript übergeben abzustreifen, dh, wollen ich das Skript den URI ohne die erste Version zu erhalten Teil. Wie kann ich das erreichen?

Antwort

0

Es wird deutlich in apache document: Apache mod_rewrite Introduction erklärt.

Man könnte es als Parameter übergeben, und verwenden Sie $_GET['route'] den URI Teil ohne erste Version Teil zu bekommen:

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

Dieses ganz dem Pfad in einem Abfrageparameter setzen würde. Es sieht ziemlich einfach aus, aber ich würde gerne wissen, ob es eine Lösung gibt, bei der der URI-Pfad als URI-Pfad und nicht als Abfrageparameter abgerufen wird. – Jago

+0

könnten Sie Ihren eigenen Router mit PHP schreiben, parsing URL, 'parse_url ($ _ SERVER ['REQUEST_URI']);' – Ben

Verwandte Themen