javascript - 将使用history.pushState()创建的URL重定向到基本URL

标签 javascript html redirect

我使用 javascript 和 history.pushState() 来创建单页选项卡系统 ( http://s.codepen.io/CKH4/debug/XdNoxX/ )。是否可以获取使用 history.pushState() 创建的虚假 URL 并将其重定向到主页。

如果我的基本网址是“example.com”,而假网址是“example.com/about”,我希望任何导航到“example.com/about”的用户都被重定向到“example.com” .

我认为在普通的 JS 中没有办法做到这一点(如果有的话也很好)。执行此操作的正确方法是什么?

最佳答案

就像 @nemoinho 在他的回答中所说,你可以从服务器端实现你的目标。例如,如果您的服务器支持.htaccess重写规则并且您使用的是php,那么您可以对.htaccess文件使用以下代码并将其保存在您的根文件夹中:

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /index.php?u=$1 [NC,QSA,L]

上面代码的作用是,简单地将任何url段作为参数u传输到index.php,这样你就可以检查$_GET['u '] 并在渲染页面之前确定要做什么。

例如: https://example.com/test/rest => https://example.com/index.php?u=test/rest

详细说明:

第一行将告诉服务器启动重写引擎。

第二行将base重写为根目录。这意味着无论您的网址是 https://example.com/test/rest ,它将把你的基数重写为 https://example.com/ .

第三行是检查请求的 URL 是否实际上不是物理文件的条件。

仅当第三行有效时才执行最后一行,它的作用是获取 base 之后的所有内容,并将捕获的字符串作为参数传递给 base 中的 index.php 。 [NC, QSA, L] 是传递给重写规则的标志。 NC 表示不区分大小写,QSA 也用于附加其他查询字符串,L 表示在执行时跳过下面的其他规则。

关于javascript - 将使用history.pushState()创建的URL重定向到基本URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36024458/

相关文章:

javascript - 仅使用 CSS 和 javascript 将 div 的隐藏部分移动到 View 中

javascript - 我可以在 Javascript 的单个 try block 中添加多个 await 调用吗?

javascript - 如何编写一个将项目附加到 DOM 并延迟下一个 Tick 的函数?

jQuery on() 不工作

c - 如何在c程序中重定向多个文本文件

php - 使用 .htaccess 选择性 URL 重定向

javascript - Canvas 上的对 Angular 线以不同的颜色/不透明度绘制

asp.net - 从 Repeater Control 生成的 Div 没有正确的 CSS 样式

jQuery .data() 不检索数据-*

tomcat - 将 sysout 和 syserr 输出(控制台)重定向到 tomcat7 中的日志文件