如何获取 url 斜杠后的最后一部分作为 php 中的获取值

how to get url last part after slash as get value in php

我的 url 看起来像:http://localhost/event_manage?slug=hello 最后一个值像 hello 因此,当我进入 http://localhost/event_manage/hello 时该页面位于 index.php 并显示错误,因为没有名为 hello 的文件夹。 但我希望这个 hello 就像 GET 值 当我去 http://localhost/event_manage/hello

我在 .htaccess 文件中尝试过:

RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?slug=

但是还是报错,无法传值!

RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?slug=

but error is http://localhost/event_manage/hello

以上规则假定您的 URL 以尾部斜杠结尾,但您的示例没有,因此它将无法匹配并导致 404(因为它没有将请求重写为 index.php).

应该是:

RewriteRule ^([\w-]+)$ index.php?slug= [L]

\w(单词字符)只是一个shorthand字符class,与[a-zA-Z0-9_].

相同

如果添加更多指令,则需要 L 标志。

这假设 .htaccessindex.php 位于 /event_manage 子目录中。


旁白:

http://localhost/event_manage?slug=hello

因为 /event_manage 是一个物理目录,这个 URL 应该是 http://localhost/event_manage/?slug=hello(目录名后有一个尾部斜线)。如果省略尾部斜杠,则 mod_dir 将在尾部斜杠后附加 301 重定向。