HTML / CSS / JS使用路径名重定向到主页

时间:2018-06-07 23:06:04

标签: javascript html firebase redirect

好吧,我有一个名为https://quarkedit.ga的代码编辑器(仅使用HTML / CSS / JS

我正在尝试添加新功能,有点像https://scratchpad.io的功能。

功能如下:每当用户来https://quarkedit.ga重定向到随机生成的代码加上域(如https://quarkedit.ga/green-panda-2066)时,下次用户访问该页面时重新加载该代码。

我的设计如下:

当用户访问quarkedit.ga时,获取路径名。如果数据库中存在路径名(使用Firebase for database),则显示代码,否则重定向回quarkedit.ga并生成新的随机代码并转到那里。

当用户离开quarkedit.ga时,获取代码并将其保存在数据库中,并将路径名作为密钥。

所以我试图实现这个,我遇到了一个问题。 https://quarkedit.ga/blahblah给了我404,因为那里没有html文件。

所以这就是我需要帮助的地方:我如何让这一步工作,比如让blahblah回到quarkedit.ga,但在网址中保留blahblah,这样我仍然可以访问它?

如果我没有正确解释,或者需要更多解释,或者如果这个问题不合适,请在下面发表评论。

请不要只是投票然后去,当我被投票时我真的很沮丧,我甚至不知道为什么。

我想在此只使用 Html,css或js

此外,出于某种原因,这并没有得到太多关注,赏金会有所帮助;)

谢谢!

1 个答案:

答案 0 :(得分:1)

基本上,你需要两件事:

  • 单一入口点网络应用配置
  • 从您的入口点开始的JavaScript路由

单个入口点配置看起来很像我在另一个QA上发布的答案:

Options +FollowSymLinks -MultiViews 
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.html [NC,L,QSA]

如果用户拥有有效的网址,则会提供该网址。其他所有内容都将以index.html结束。无论哪种方式,浏览器中的URL都不会改变。

下一步取决于您的实际实施;你可以:

  • 在这些网址上生成物理文件,然后就可以了。 Web服务器的内置路由应该足够了。可能没有必要在数据库中存储URL。
  • 将代码页的内容存储在不同的位置,然后可能需要基于数据库查找的自定义重定向。一开始,简单的window.location.replace(codeUrl);就足够了。从长远来看,您可能需要查看路由组件,例如router.jsnavigoCrossroads.js
  • 将代码页的内容存储在数据库中,并在需要时将其加载到编辑器中。始终需要进行数据库查找。

当请求不存在的URL时,您可以使用该URL作为新空代码页的起点。

正如Roko所建议的那样,尽早避免创建和存储代码及相关的URL。实际上,我建议要求用户通过单击按钮手动保存文件。如果没有保存,一切都是临时的,当浏览器窗口关闭时内容就会消失。例如,this在线正则表达式测试工具就是这样。