apache - 删除 https ://from URL while still serving SSL

标签 apache .htaccess ssl https url-rewriting

我正在尝试重写浏览器中显示的 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]

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

最佳答案

I am attempting to rewrite the URL displayed in a browser to eliminate the https:// portion.

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

基本上,你不能。

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

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

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

关于apache - 删除 https ://from URL while still serving SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44750186/

相关文章:

regex - .htaccess 仅允许来自 Chrome、Opera、Mozilla、Safari,从其他重定向

php - 我想将所有大写 url 重定向到小写,反之亦然,在 godaddy 托管的 vps linux 上大约有 300 个 url。

c# - WCF net.tcp SSL : none of the cipher suites supported by the client application are supported by the server

ssl - ColdFusion 10 HTTP SSL

php - .htaccess 不工作

java - XSL - 在节点路径中使用变量

python - 在 apache/mod_wsgi 上运行 flask 时遇到问题

php - 以性能为导向的方式来保护 PHP 级别的文件?

android - 生成和安装 SSL 证书

php - 让 Apache 在传递 HTTP 408 请求超时之前等待更长时间