在仍然提供SSL的情况下从URL中删除https://

时间:2017-06-25 20:11:15

标签: apache .htaccess ssl https url-rewriting

我正在尝试重写浏览器中显示的网址,以消除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]

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

1 个答案:

答案 0 :(得分:2)

  

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

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

基本上,你不能。

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

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

通常,默认情况下,浏览器倾向于在通过普通HTTP提供服务时隐藏协议,并仅在通过HTTPS提供时显示协议 - 这是用户对网站安全的另一个指示。任何删除协议的行为都只会扰乱用户信任。