能否使用简单的PHP获取URL的斜杠/参数?

4

是否有可能使用php获取类似这样的参数:index.php/bar/foo? 我知道可以使用index.php?a=bar&b=foo和用户$_GET['a']之类的东西。但我需要用另一种方式完成它。

4个回答

5
这里的答案看起来只是猜测。mod_rewrite 假设使用 apache webserver(我们不知道你使用的是哪个),而且对于这个简单的任务来说过于复杂了。Apache 的默认行为是将 index.php/xx/xx 映射到 index.php?xx/xx
看看这有多简单:
$args = explode('/', $_SERVER['QUERY_STRING']);

print_r($args);

1
非常好的信息,谢谢!我刚在我的本地安装上尝试了一下,它运行正常。 - David Abrahamsson
DanFromGermany:这只是出于好奇:如果你有一个像http://mysite/index/bar/foo这样的URL,那么你需要使用mod_rewrite或类似的东西,对吗? - David Abrahamsson
@DavidAbrahamsson 是的,当你想要隐藏 .php 和其他内容时,你需要使用 mod_rewrite - Daniel W.

3

编辑:正如DanFromGermany指出的那样,实际上可以在不使用mod_rewrite等工具的情况下拥有像index.php/bar/foo这样的URL。 我想关键是在URL中有一个文件名(index.php)。

这必须在Web服务器中完成。

在apache中,有一个名为mod_rewrite的模块,可以将像index.php/bar/foo这样的URL重写为另一种格式,例如index.php?a=bar&b=foo。

示例以及主题描述:http://www.seochat.com/c/a/search-engine-optimization-help/creating-search-engine-friendly-urls-with-php/

您正在使用哪个Web服务器?


啊,好的,谢谢。我正在使用 Apache Web 服务器。但这回答了我的问题,因为我只是想知道是否可以使用纯 PHP 实现。 - gurehbgui
检查htaccess文件以进行此类URL重写 https://dev59.com/U2fWa4cB1Zd3GeqPl_XR#12229240 - user2706194
Apache的默认行为是将index.php/xx/xx映射到index.php?xx/xx - Daniel W.

1
我使用以下代码来访问斜杠参数:
$args = $_SERVER["REQUEST_URI"];
$arg_arr = explode("/",$args);
print_r($arg_arr);

希望这能帮助到某人。

0
要实现相同的功能,您可以在httpd.conf上重写URL,或使用像CodeIgniter等提供内置功能的PHP框架。

1
另外,您可以通过 .htaccess 完成此操作。 - ʰᵈˑ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接