【发布时间】:2021-04-03 16:45:07
【问题描述】:
我想创建用户友好的链接(例如:http://www.website.com/post-id/this-is-post-title),但是当用户点击“http://www.website.com/post-id/changed-post-title-by-user”地址时应该被替换 - 立即且无需重定向 - 到“http://www.website.com/post-id/post-title”,其中“post-title”是 ID 等于“post-”的帖子的标题id" 就像 StackOverFlow 链接的行为一样。我知道推送历史状态 API:
history.pushState(state, title [, url])
但此方法需要启用 Javascript,并且某些网站(如 StackOverFlow 方法)在禁用 JS 的情况下工作。 我像这样处理“index.php”中的链接:
$requestURI = explode('/', $_SERVER['REQUEST_URI']);
$command = array_values($requestURI);
if(condition)
{
include('page.php');
}
【问题讨论】:
-
本质上,你的意思是你想要重定向而不使用重定向。祝你好运......更改浏览器中显示的 url 的唯一方法是直接使用推送状态重定向或操作它。 FWIW,重定向是友好网址的工作方式。
-
@TimMorton 获取我的问题“stackoverflow.com/questions/65451745/…”的链接,您可以将最后一部分“user-friendly-links-behavior-without-mod-rewrite”更改为您想要的任何内容,链接将即使您禁用了推送状态所基于的javascript,也可以立即更改为当前链接而无需重定向。
-
我一直试图弄清楚你在说什么机制:什么改变了链接,什么事件?你是说当你输入 url a 时,它会在你按 enter 后显示为 url b?
-
@TimMorton 此链接“stackoverflow.com/questions/65451745/whatever”将显示正确的帖子,但地址栏将显示此链接“stackoverflow.com/questions/65451745/…”
标签: javascript php html apache