从地址栏隐藏 URL 路径并仅从站点访问它

Hide URL path from address bar and access it from site only

我想限制访问者使用 URL 访问我网站的子页面。他们只能通过单击 link.

从网站访问子页面

假设,要访问用户个人资料页面,link 是

www.example.com/user/2/profile

还有一个带有此 link 的按钮,用于访问用户个人资料页面。

因此,当用户单击该按钮时,它将被重定向到那个 URL,但如果有人直接访问这个 URL,它将显示错误或重定向到主页。

或者,URL会像

一样被隐藏
www.example.com/#

总之,没有人通过直接点击URL而不是索引页面来访问网页。

可以吗?

我的网站在 Laravel.

要使其只能从您的站点访问,您可以检查 Referer HTTP 请求 header。这在直接请求时为空,并设置为 referring URL 否则(即 link 被 clicked[=38 的页面=]).

然而,这是不可靠的。用户可以将他们的浏览器配置为不发送 Referer header(因此这些用户将被阻止)。搜索引擎机器人不会发送 Referer header(如果这是一个问题)。对于恶作剧的用户来说,伪造 Referer 以获得访问权限是微不足道的。

例如,在根 .htaccess 文件的顶部(在 Laravel 指令之前),您可以这样做:

RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com/
RewriteRule ^user/2/profile$ - [F]

以上将为 /user/2/profile 的任何请求提供 403 禁止,其中 Referer HTTP 请求 header 未启动 https://www.example.com/(包括 http和 non-www).

So, when a user clicks on the button it will be redirected to that URL

澄清一下,用户点击的 link 必须是“普通”link,这会导致浏览器为新的 URL 发出另一个 HTTP 请求,否则 Referer不会生成。

Hide URL path from address bar

你不可能真的那样做。