我的网址看起来像:
http://localhost/event_manage?slug=hello
,最后一个值就像hello
因此,当我转到 index.php
时,该页面位于 http://localhost/event_manage/hello
中并显示错误,因为没有名为 hello
的文件夹。
但我想要这个hello
就像我去时获取价值http://localhost/event_manage/hello
我在
.htaccess
文件中尝试过:
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?slug=$1
但是还是显示错误,无法传值!
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?slug=$1
但是错误是
http://localhost/event_manage/hello
上述规则假设您的 URL 以尾部斜杠结尾,但您的示例并非如此,因此它将无法匹配并导致 404(因为它不会将请求重写为
index.php
)。
应该是:
RewriteRule ^([\w-]+)$ index.php?slug=$1 [L]
\w
(单词字符)只是一个简写字符类,与 [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 重定向。
这对我有用:
RewriteEngine 开启 RewriteRule ^([a-zA-Z0-9_-]+)$index.php?slug=$1