代码之家  ›  专栏  ›  技术社区  ›  Sheshank S.

html/css/js重定向到带有路径名的主页

  •  0
  • Sheshank S.  · 技术社区  · 7 年前

    好吧,我有一个代码编辑器( 仅使用html/css/js 称为 https://quarkedit.ga

    我正在尝试添加一个新功能,就像 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 在此。

    而且,由于某些原因,这并没有引起太多的关注,赏金会有帮助;)

    谢谢!

    1 回复  |  直到 7 年前
        1
  •  1
  •   wp78de    7 年前

    基本上,你需要两件事:

    • 单入口点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。实际上,我建议要求用户通过单击按钮手动保存文件。如果不保存,则所有内容都是临时的,当浏览器窗口关闭时,内容将消失。例如, this 在线regex测试仪就是这样工作的。