【问题标题】:Remove https:// from URL while still serving SSL从 URL 中删除 https://,同时仍提供 SSL
【发布时间】:2017-11-28 17:32:36
【问题描述】:

我正在尝试重写浏览器中显示的 URL 以消除 https:// 部分。由于不熟悉 Apache 编码,我尝试了许多不同的方法来调整其他代码以达到结果,但都没有成功。

我的.htaccess 文件包括310 重定向规则,以及一些重写条件,目前所有这些都有效:

# Force browswer to use SSL, even when referring URL is non-secure
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Catch-all for any potential 404 error (file not found) will 
# redirect to the index (/) page
Options +SymLinksIfOwnerMatch 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [L,R=301]

非常感谢您在这方面的任何帮助!

【问题讨论】:

  • “在仍然提供 SSL 的同时从 URL 中删除 https://”你不能。 http:// 是通过普通 http 而不是 ssl 提供的。
  • 屏蔽真实 URL 是浏览器的一项“功能”(在我看来,这也是造成无限混乱的根源)。 2017 年,所有浏览器供应商似乎都同意展示 SSL 协议。他们可以随时改变主意,但这不是您作为网站管理员可以做的任何事情。

标签: apache .htaccess ssl https url-rewriting


【解决方案1】:

我正在尝试重写浏览器中显示的 URL 以消除 https:// 部分。

我很想看看你的“尝试”。以及您为什么要这样做?

基本上,你不能。

您无法控制如何浏览器显示协议(即https,或http),或与此相关的URL的任何部分, 在浏览器的地址栏中。任何“重写”URL 以删除https:// 的尝试都只会阻止您的网站通过 SSL 提供内容——这不是您的本意。更改浏览器地址栏中 URL 的物理外观的唯一方法是更改​​物理 URL。这是基本的浏览器安全性——网站不应该能够控制这种行为。您不希望网站能够伪装成它不是的东西(即网络钓鱼)。

然而,一些浏览器确实允许用户在一定程度上控制这种行为。例如,Opera 默认会显示更友好的 URL,省略 HTTP 协议甚至查询字符串。但是,可以在设置中禁用这种“友好”显示格式,以显示完整的“真实”URL。

通常,默认情况下,浏览器在通过普通 HTTP 提供服务时倾向于隐藏协议,而仅在通过 HTTPS 提供服务时显示它 - 向用户额外表明该站点是安全的。任何删除协议的尝试只会破坏用户的信任。

【讨论】:

  • 像 twitter 这样的网站呢?他们更改 URL 而不实际刷新页面。
  • @Adam 不,他们没有,没有人可以这样做。请谷歌了解 iframe 和 AJAX。
  • @user82217:我就是这么想的。我的尝试是使用 rewrite 模块来删除协议,但它导致了问题(不足为奇)。我想这样做是因为大多数浏览器都有一些视觉指示(例如锁),它告诉用户该站点是安全的,因此在 URL 中包含 https://(八个附加字符)是多余的。只是想强调我的网站/品牌并消除不必要的过剩。我想我将不得不等到浏览器决定隐藏安全会话的协议。谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
  • 2010-12-14
  • 2012-02-11
  • 2021-09-23
  • 2018-08-16
  • 2017-08-28
相关资源
最近更新 更多