如何获取 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
标志。
这假设 .htaccess
和 index.php
位于 /event_manage
子目录中。
旁白:
http://localhost/event_manage?slug=hello
因为 /event_manage
是一个物理目录,这个 URL 应该是 http://localhost/event_manage/?slug=hello
(目录名后有一个尾部斜线)。如果省略尾部斜杠,则 mod_dir 将在尾部斜杠后附加 301 重定向。
我的 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
标志。
这假设 .htaccess
和 index.php
位于 /event_manage
子目录中。
旁白:
http://localhost/event_manage?slug=hello
因为 /event_manage
是一个物理目录,这个 URL 应该是 http://localhost/event_manage/?slug=hello
(目录名后有一个尾部斜线)。如果省略尾部斜杠,则 mod_dir 将在尾部斜杠后附加 301 重定向。