1

我有一个小网站。它的.htaccess文件是这样的:

RewriteEngine On
RewriteBase /site/
RewriteRule ^(.+)$ index.php [QSA,L]

因此它将所有 URL 重定向到“index.php”。我可以获得请求的 URL 并采取相应的行动:

$uri = $_SERVER['REQUEST_URI'];
switch($uri)
{
case 'index':
    LoadIndex();
    break;

case 'about':
    LoadAbout();
    break;

case 'Posts':
    LoadPosts();
    break;

default:
    LoadNotFound();
}

假设我想$_GET[]在索引页面中使用。这会更改 URL,因此无法加载页面。我怎样才能做到这一点?如何在不影响 URL 变量的情况下路由我的站点$_GET[]

4

1 回答 1

1

$_SERVER[REQUEST_URI]/index.php不会 index$_SERVER[REQUEST_URI]还包括QUERY_STRING. 所以,它可能是/index.php?var1=abc&var2=def

如果您只需要 URI 路径,请尝试PHP_SELFSCRIPT_NAME. 但请记住,这些也将是/index.php,包括/.php

$uri = $_SERVER['PHP_SELF'];
switch($uri)
{
case '/index.php':
    LoadIndex();
    break;
...
}

你不需要QSA在你的RewriteRule. 来自RewriteRule 指令

修改查询字符串
默认情况下,查询字符串是原封不动地传递的。

这意味着,该$_GET变量在您的 PHP 脚本中和以前一样可用。

于 2013-01-12T15:32:23.643 回答