如果您正在使用 mod_rewrite 在 Apache2 Web 服务器上重定向 URL,并且您的 URL 包含 GET 变量,则可能会出现问题。这是因为 mod_rewrite 必须重新构建完整的 URL 并将其传递给后端脚本。如果您需要动态添加 GET 变量,这可能会变得非常棘手。
解决此问题的一种方法是在 .htaccess 文件中手动重写 GET 变量。例如,如果您希望将 /index.php?page=about 转换为 /about,您可以使用以下代码:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/?$ index.php?page=$1 [L]
这会将 URL 重写为 /about,但实际上在后端会传递 /index.php?page=about。这意味着您可以在 PHP 脚本中访问 $_GET['page'] 变量。
请注意,此方法对于多个 GET 变量可能不起作用。在这种情况下,您可能需要使用其他技术,例如在 PHP 脚本中手动分析 URL。