有没有办法从地址栏中隐藏 URL 的一部分,同时将其保留在 $_GET 中?

问题描述 投票:0回答:1

我有一个网站,例如,https://example.com,该网站在 LAMP 堆栈上运行(已激活 Apache2 rewrite_mod),并且我想将其设为多语言。

不过,我不希望我的 URL 包含语言/区域设置 — 我只想将它们保留在 $_GET 数组中。因此,当单击地址为

https://example.com/dev/en
的链接时,我希望在地址栏中看到
https://example.com/dev/
并在 $_GET 数组中看到
[lang] => en

有没有办法做到这一点(使用 Apache RewriteRules 或其他)?

这是我已经走了多远:

RewriteEngine on
RewriteRule ^dev/(\w+)$ dev?lang=$1

这确实重写了

/en
,但将参数保留在我不想要的地址栏中。

php mod-rewrite apache2
1个回答
0
投票

$_GET 超全局变量是通过 URL 参数(又名查询字符串)传递到当前脚本的变量关联数组。这意味着它只能包含 URL 参数的内容。如果您想通过不带 URL 参数的 HTTP 请求传输数据,您可以考虑使用 POST 方法。

$_POST 超级全局 可以访问随请求传递的表单数据,并且可以轻松编码。但是,如果您的目标是提供正确的语言/区域设置,则此答案实现了一个带有语言选择的前端表单和一个用于设置 cookie 的后端脚本。由于它是一个表单,因此它使用 POST 和 $_POST 超全局来进行请求。

© www.soinside.com 2019 - 2024. All rights reserved.