我使用 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/