javascript - HTML/CSS/JS 使用路径名重定向到主页
问题描述
我有一个名为https://quarkedit.ga的代码编辑器(仅使用 HTML/CSS/JS )
我正在尝试添加一个新功能,有点像https://scratchpad.io的做法。
功能是这样的:每当用户访问https://quarkedit.ga时,重定向到随机生成的代码加上域(如https://quarkedit.ga/green-panda-2066),并且下次用户访问页面重新加载该代码。
我的设计如下:
当用户访问 quarkedit.ga 时,获取路径名。如果路径名存在于数据库中(使用 Firebase 作为数据库),则显示代码,否则重定向回 quarkedit.ga 并生成一个新的随机代码并前往那里。
当用户离开 quarkedit.ga 时,获取代码并将其以路径名作为键保存在数据库中。
所以我试图实现这个,我遇到了一个问题。https://quarkedit.ga/blahblah给了我一个 404,因为那里没有 html 文件。
所以这是我需要帮助的内容:我如何使该步骤发挥作用,例如使 blahblah 返回 quarkedit.ga 但将 blahblah 保留在 URL 中以便我仍然可以访问它?
我想只使用Html、css 或 js。
解决方案
基本上,你需要两件事:
- 单入口点 Web 应用程序配置
- 从入口点开始的 JavaScript 路由
单入口点配置看起来很像我在其他QA上发布的答案:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.html [NC,L,QSA]
如果用户有一个有效的 URL,它将被提供。其他所有内容都将在 index.html 中结束。无论哪种方式,浏览器中的 URL 都不会改变。
下一步取决于您的实际实施;你可以:
- 在这些 URL 上生成物理文件,然后一切就绪。Web服务器的内置路由应该足够了。可能不需要将 URL 存储在数据库中。
- 将代码页面的内容存储在不同的位置,则可能需要基于数据库查找的自定义重定向。一开始,一个简单的
window.location.replace(codeUrl);
就足够了。从长远来看,您可能想看看路由组件,例如router.js、navigo或Crossroads.js。 - 将代码页面的内容存储在数据库中,并在需要时将其加载到编辑器中。数据库查找始终是必要的。
当请求一个不存在的 URL 时,您可以使用该 URL 作为新的空代码页的起点。
正如 Roko 所建议的,避免过早地创建和存储代码和相关的 URL。实际上,我建议要求用户通过单击按钮手动保存文件。如果不保存,一切都是暂时的,当浏览器窗口关闭时,内容就消失了。例如,这个在线正则表达式测试器就是这样工作的。
推荐阅读
- terraform - 地形:count == true
- python-3.x - 将食物网文本文件转换成字典-python 3
- r - 特定表的函数计数用法:UseMethod(“组”)中的错误:没有适用于“组”的适用方法应用于“字符”类的对象
- git - GIT 默认忽略对已提交文件的本地更改
- html - Html img srcset,不显示移动设备的小图像
- java - 如何确定从(Java)发生了哪一侧冲突
- javascript - javascript 在您键入时显示多个搜索结果
- bash - 我可以返回并更改我之前在 Bash 中回显的一行吗?
- sql - ExecutedScalar() - ASP.NET Web 应用程序
- jquery - 如果 "li" 有这个 id,不要添加活动类