2017-03-02 21 views
1

我點擊有以下路徑中的鏈接:在Apache2的href="/book/45"轉換URI值接近GET變量

隨着ModRewrite:

# Enable URI Routing 
RewriteEngine On 

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

會被重定向到我的index.php:

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; 
    ... 
} 

我收到500內部服務器錯誤。沒有?id=$routes[2]頁面加載正常。

我的目標是能夠在文件books.php中引用編號爲$_GET['id'];的編號。

+0

我通過傳遞變量解決了這個問題。 ''if($ routes [1] ==「book」){ $ book_id = $ routes [2]; require('../ views/books.php'); 休息; }' 這是因爲''/ views/books.php''上的腳本能夠看到''book_id''的變量 –

回答

0

你不能讓你這樣的要求。 PHP require函數需要一個文件而不是「URL like」。你可以試試這個破解:

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

在這裏可以應用標題重定向嗎? –

+0

你想要做什麼? –

+0

建立一條路徑去做X.在這個例子中,它會查看帶有ID標籤的書#45 ''View this Book''' –