我正在使用带有history.pushState()
的javascript来创建单页标签系统(http://s.codepen.io/CKH4/debug/XdNoxX/)。是否可以获取使用history.pushState()
创建的假网址并将其重定向到主页面。
如果我的基本网址是' example.com'而假网址是' example.com/about'我希望任何导航到' example.com/about'被重定向到' example.com'。
我认为在普通的JS中没有办法做到这一点(如果有的话)。这样做的正确方法是什么?
答案 0 :(得分:1)
这是不可能的,但您可以将您的网络服务器配置为处理所有请求,例如他们正在调用主页面,例如通过提供相同的页面或通过302重定向。
答案 1 :(得分:1)
像@nemoinho在回答中所说,你可以从服务器端实现你的目标。例如,如果您的服务器支持 .htaccess 重写规则并且您使用的是php,那么您可以使用以下代码来存储.htaccess文件并将其保存在根文件夹中:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /index.php?u=$1 [NC,QSA,L]
以上代码的作用是,只需将任何网址段作为参数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之后获取所有内容并将捕获的字符串作为参数传递给base中的index.php。 [NC,QSA,L]是传递给重写规则的标志。 NC用于非大小写敏感,QSA用于附加其他查询字符串,L用于在执行时跳过下面的其他规则。