.htaccess - 为什么我的网站 URL 末尾有双斜杠,例如 ://

标签 .htaccess url https url-rewriting

当我输入我的网站 zeugmarket.com 时,它显示为 https://zeugmarket.com//

我编写了这个 htaccess 文件以从 HTTP 转移到 https,但它还在末尾添加了两个斜杠。 我该如何阻止它:

RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://www.zeugmarket.com%{REQUEST_URI} [L,R=301]
Header always set Content-Security-Policy "upgrade-insecure-requests;"

最佳答案

RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://www.zeugmarket.com%{REQUEST_URI} [L,R=301]

似乎有“其他东西”添加了额外的斜杠 - 由于这些指令,它没有发生。

at the end of my website URL like this: //

双斜杠实际上位于 URL 路径的开头,而不严格位于结尾。例如。如果您请求http://example.com/foo,那么它会返回https://example.com//foo

但是,这个重定向响应实际上来自 Nginx 服务器,而不是 Apache。 Nginx 可能被用作前端(反向)代理 - 因此需要在中使用 ENV:HTTPS (环境变量)而不是 HTTPS (服务器变量) RewriteCond 指令。

我会查找 Nginx 代理的配置问题,因为很可能是这个添加了额外的斜杠。

RewriteRule ^(.*)$ https://www.zeugmarket.com%{$1} [L,R=301]

顺便说一句,在此示例中(来自您的评论)%{$1} 并不严格有效,并且始终会导致空字符串 - 因此双斜杠绝对不是来自 Apache。

但是,您似乎有一个单页网站。您的任何 URL 上都没有任何 URL 路径?只有一个可见的 URL,即 https://www.example.com/,因此可以简化您的指令:

RewriteCond %{ENV:HTTPS} !on
RewriteRule ^ https://www.example.com/ [L,R=301]

请注意,主机名后面应该有一个斜杠(位于 URL 路径的开头)。如果您省略它,那么(通常)浏览器将在重定向的请求中附加斜杠。 (但看起来 Nginx 实际上是在重定向响应中附加这些斜杠 - 在到达浏览器之前。)

有关浏览器和主机名后的尾部斜杠的更多信息,请参阅网站管理员堆栈上的以下问题:

https://webmasters.stackexchange.com/questions/35643/is-trailing-slash-automagically-added-on-click-of-home-page-url-in-browser

关于.htaccess - 为什么我的网站 URL 末尾有双斜杠,例如 ://,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64604068/

相关文章:

apache - 将所有流量从外部域重定向到本地域主页?

python - 你如何在python中执行带有url的mysql?

PHP规范化远程url

svn https : "ra_serf: An error occurred during SSL communication"

php - Cpanel Htaccess 强制 URL

WordPress:PageSpeed Insights 中的 "Serve static assets with an efficient cache policy"

java - 玩框架认证,比如htaccess

php - 删除 php/html 扩展名并从规则中排除一个特定文件

ios - API 调用给出协议(protocol)错误

amazon-web-services - aws ubuntu 16.04 服务器上的 HTTPS