2017-03-02 3 views
1

ich mit dem folgenden Pfad auf einen Link klicken: href="/book/45"Konvertieren URI-Wert zu erreichen GET-Variable

Mit ModRewrite in Apache2:

# Enable URI Routing 
RewriteEngine On 

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

Welche meine index.php umleitet:

function getCurrentUri() 
{ 
    $basepath = implode('/', array_slice(explode('/', $_SERVER['SCRIPT_NAME']), 0, 0)) . '/'; 
    $uri = substr($_SERVER['REQUEST_URI'], strlen($basepath)); 
    if (strstr($uri, '?')) $uri = substr($uri, 0, strpos($uri, '?')); 
    $uri = '/' . trim($uri, '/'); 
    $uri = filter_var($uri, FILTER_SANITIZE_URL); 
    return $uri; 
} 

$uri = getCurrentUri(); 
$routes = array(); 
$routes = explode('/', $uri); 
if ($routes[1] == "book") { 
    ... 
    require('../views/books.php?id=$routes[2]'); 
    break; 
    ... 
} 

Ich bekomme einen 500 internen Serverfehler. Ohne die ?id=$routes[2] lädt die Seite fein.

Mein Ziel ist es, die ID mit $_GET['id']; in der Datei books.php verweisen zu können.

+0

Ich löste dies durch die Variable übergeben. '' if ($ routes [1] == "Buch") { $ book_id = $ routes [2]; require ('../ views/books.php'); Pause; } '' Dies funktioniert, weil das Skript in ''/views/books.php'' die Variable für '' $ book_id'' sehen kann –

Antwort

0

Sie können Ihre Anforderung nicht so machen. Die PHP require Funktion erwartet eine Datei und keine "URL wie". Sie können diesen Hack versuchen:

$_GET['id'] = $routes[2]; 
require('../views/books.php'); 
+0

Kann eine Header-Weiterleitung hier angewendet werden? –

+0

Was möchten Sie genau machen? –

+0

Erstellen Sie eine Route zu tun X. In diesem Beispiel würde Buch mit einem ID-Tag anzeigen # 45 '' View this Book '' –