将使用 history.pushState() 创建的 URL 重定向到基本 URL
Redirect URL created with history.pushState() to base URL
我正在使用带有history.pushState()
的javascript来创建单页标签系统(http://s.codepen.io/CKH4/debug/XdNoxX/)。是否有可能获得使用history.pushState()
创建的虚假网址并将其重定向到主页。
如果我的基本网址是"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
阐述:
第一行将告诉服务器启动重写引擎。
第二行将基目录重写为根目录。这意味着无论您的网址 https://example.com/test/rest 如何,它都会将您的基础重写为 https://example.com/。
第三行是检查请求的 url 是否实际上不是物理文件的条件。
仅当第三行有效时,才会执行最后一行,它所做的是获取 base 之后的所有内容,并将捕获的字符串作为参数传递给 index.php in 您的 base。[NC, QSA, L] 是传递以重写规则的标志。NC 表示不区分大小写,QSA 用于附加其他查询字符串,L 用于在执行时跳过下面的其他规则。
这是不可能的,但您可以将您的网络服务器配置为处理所有请求,就像它们调用主页一样,例如通过提供同一页面或通过 302 重定向。
- 我的URL重定向安全吗
- 基于屏幕宽度的URL重定向
- HTML5/Javascript验证复选框提交URL重定向
- 基于变量的Javascript URL重定向无法正常工作
- 将使用 history.pushState() 创建的 URL 重定向到基本 URL
- 通过随机 url 重定向传递和添加参数
- 将 URL 重定向到子文件夹
- 如何使用jQuery根据引用/当前URL重定向页面
- Firefox 插件中的 OnBeforeRequest URL 重定向(从 Chrome 扩展程序转换)
- 带有 JavaScript URL 重定向的正则表达式
- 使用 JavaScript 使用 MD5 值进行 URL 重定向
- 当网址路径中有哈希时,Javascript url 重定向
- Angular.js:prettyPhoto URL重定向到Angular路由中提到的默认页面
- 将特定URL重定向到moblile上的另一个URL
- 使用javascript或jquery修改href-或-URL重定向/重写和模式匹配
- 从主页url重定向到url+锚点
- 如何在URL重定向后获得新的URL
- 正在获取另一个URL重定向到的URL
- 循环中的URL重定向
- 如何从一个URL重定向到另一个URL