gpt4 book ai didi

.htaccess https 重定向单个页面(使用相对 url)

转载 作者:行者123 更新时间:2023-12-02 07:07:09 24 4
gpt4 key购买 nike

我需要能够将单个页面从标准 http 重定向到 https。例如,我想从 http://domain.com/quote.phphttps://domain.com/quote.php .

到目前为止,我在我的 .htaccess 文件中使用这段代码,它正在用于初始重定向。

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^quote.php https://domain.com/quote.php [R=301,L]

我的问题是,一旦我访问了 quote.php 页面并被重定向到 https 版本,我导航的所有其他网站页面将继续使用 https 协议(protocol)。这是一个潜在的重复内容问题,因为我现在可以通过 http 和 https 访问相同的内容。

所以我想做的是能够执行上述重定向,然后以某种方式对除 quote.php 之外的所有页面反向执行相同的操作。因此,如果您尝试通过 https 访问它们,它将重定向到默认的 http 版本。

我在整个站点中使用相对 URL,因此我不能简单地在 https/http 前缀中进行硬编码。如果可能,我需要能够通过 .htacess 执行此操作。

非常感谢任何帮助。

最佳答案

RewriteCond %{HTTPS}  off
RewriteRule ^quote.php$ https://domain.com/quote.php [R=301,L,QSA]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/quote.php
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L,QSA]

回复评论:要将新页面添加到条件中,只需将它们放在括号中。例如:

RewriteCond %{HTTPS}  off
RewriteRule ^(quote|contact).php$ https://domain.com/$1.php [R=301,L,QSA]

问题 2:QSA 标志将当前查询字符串添加到新 URL。它默认发生,除非您更改查询字符串。您现在可以安全地删除它们,但如果您添加了查询字符串,并且还想使用旧的,请将其放回去。


编辑 2:
上面的代码有一点安全问题 :(,实际上它不止一点点 :-D。当您使用 https 传输 html 代码并且页面使用相对路径时,这很好。但是,当您将这些代码放入 .htaccess 时,它们会变成 http,这就是问题所在:-)。将代码放在下面以解决问题:):

RewriteCond %{HTTPS}  off
RewriteRule ^(quote|contact).php$ https://domain.com/$1.php [R=301,L,QSA]


RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/(quote|contact).php
RewriteCond %{REQUEST_URI} !^/(.*)\.(css|png|js|jpe?g|gif|bmp)$
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L,QSA]

现在,您在安全页面上使用的所有图像、脚本......都在安全地传输。

关于.htaccess https 重定向单个页面(使用相对 url),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9899258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com