Dropbox 风格的 URL,不使用哈希或参数

Posted

技术标签:

【中文标题】Dropbox 风格的 URL,不使用哈希或参数【英文标题】:Dropbox style URL, without using hashes or params 【发布时间】:2014-02-08 10:17:30 【问题描述】:

有人能指出我正确的方向吗?我正在尝试创建一个如下所示的网址。我不想使用 url 哈希 #I2QT40oSwU0AoH7g02cAHI 或参数 ?myparam=I2QT40oSwU0AoH7g02cAHI

https://www.dropbox.com/l/I2QT40oSwU0AoH7g02cAHI

这是用 mod_rewrite 完成的吗?

非常感谢!

【问题讨论】:

【参考方案1】:

是的,这是通过编辑 httpd.conf 文件(打开 AllowOverride all)并在您的 Web 根目录中创建一个 .htaccess 文件来完成的。

这是一个示例 .htaccess 文件

Options -Multiviews

RewriteEngine On
RewriteBase /

RewriteRule ^l/(.*)$ /somescript.php?key=$1 [L]

以上将直接

https://www.dropbox.com/l/I2QT40oSwU0AoH7g02cAHI

https://www.dropbox.com/somescript.php?key=I2QT40oSwU0AoH7g02cAHI

【讨论】:

我不会在 httpd.conf 中全局启用“AllowOverride all”。你必须明白你在做什么。这是安全功能。阅读here @eduard 这是一项安全功能,可在攻击者访问您的 .htaccess 文件时保护恶意恶意行为。如果你不打开它,那么你就不能通过 Apache 重写 URL。如果您确实打开了它,并且攻击者可以访问您的根目录(因此是 .htaccess 文件),那么您需要担心的事情比 URL 被重定向的大得多【参考方案2】:

它被称为Clean URL 通常它是通过url重写技术实现的。但也可以使用 404 HTTP 错误页面来处理此类 url。

【讨论】:

【参考方案3】:

是的! mod 重写正是您正在寻找的。你可以在这里玩这个生成器:http://www.generateit.net/mod-rewrite/index.php

解决办法如下:

在您的根目录中放置一个 .htaccess,并将其添加到其中。当用户进入时

http://domain.com/l/I2QT40oSwU0AoH7g02cAHI

它将在服务器上执行这个“隐藏”

http://domain.com/index.php?myparam=I2QT40oSwU0AoH7g02cAHI

添加这个:

RewriteEngine On

# /l/ trick
RewriteRule ^l/([^/]*)$ /index.php?myparam=$1 [L]

【讨论】:

以上是关于Dropbox 风格的 URL,不使用哈希或参数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用传入的图像 URL 将图像从 iOS 上传到 DropBox?

使用新 URL 更新地址栏而不使用哈希或重新加载页面 [重复]

GWA2-Perl的面向对象方法中数组或哈希列表参数传递问题

Symfony2 将哈希片段参数附加到分页 URL

如何同步 Redux 状态和 url 哈希标签参数

Dropbox 共享文件 URL