将URI值转换为可访问的GET变量

时间:2017-03-02 20:41:35

标签: php apache2

点击包含以下路径的链接:href="/book/45"

在Apache2中使用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'];引用ID。

1 个答案:

答案 0 :(得分:0)

你不能像这样提出要求。 PHP require函数需要一个文件而不是“URL like”。你可以试试这个黑客:

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