为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 http 重定向到 https 加上将 index.html 重定向到

如何将 http 重定向到 https 加上将 index.html 重定向到

慕丝7291255 2022-12-22 09:41:41
我在 .htaccess 中有一个将 http 重定向到 https 的代码,但我还想添加一个将index.html页面重定向到另一个 html 页面的代码。有没有办法在.htaccess. 下面提供的代码。http转https代码RewriteEngine OnRewriteCond %{HTTP:X-Forwarded-Proto} =httpRewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]index.html 到另一个html页面代码RewriteEngine OnRewriteCond %{HTTP_HOST} ^example.com$RewriteRule ^$ http://example.com/index.php [L,R=301]
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example.com$

RewriteRule ^$ http://example.com/index.php [L,R=301]

是的,这是一个外部重定向,从 重定向http(s)://example.com/到http://example.com/index.php。但是,您正在重定向到 HTTP,而不是 HTTPS,并且您正在重定向到index.php,而您index.html在问题中已说明。似乎不需要检查请求的主机名,除非您有多个域并且特别只想重定向一个实例。


除非您计划实施 HSTS,否则请在您的常规 HTTP 到 HTTPS 重定向之前包含此重定向,并在您的 HTTP 到 HTTPS 重定向中包含规范主机名。


例如:


RewriteEngine On


# Redirect / or /index.html TO /dir/index.html (HTTPS)

RewriteRule ^(index\.html)?$ https://example.com/dir/index.html [R=302,L]


# Redirect HTTP to HTTPS

RewriteCond %{HTTP:X-Forwarded-Proto} =http

RewriteRule ^ https://example.com%{REQUEST_URI} [R=302,L]

但是,在阅读您的链接问题后,外部“重定向”可能不是您问题的正确解决方案。当您应该链接到子目录中的文件时,听起来您可能“错误地”链接到文档根目录中的文件?(真的,如果是这种情况,您应该更正您的内部链接……)但是,一个可行的解决方案可能是在内部将请求重写为所需的 URL 路径,或者DirectoryIndex如果您链接到文档根目录,则更改 。这对用户/客户端是完全隐藏的——用户只能看到 URL A,但实际上您在提供 URL B。但这取决于您网站的结构。


另一方面,外部重定向实际上将用户/浏览器发送到 URL B。他们同时看到 URL A(他们点击的链接)和 URL B(他们被重定向到的 URL)——就像搜索引擎机器人一样. 浏览器需要发出两个请求。这对用户来说可能会更慢,并且会在您的服务器上进行更多工作(不多,但仍然更多)。


查看完整回答
反对 回复 2022-12-22
?
繁花如伊

TA贡献2012条经验 获得超12个赞

你想先做你的 http --> https 因为这同时适用于原始和重定向以进行安全通信。

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

现在您可以将重定向应用到index.php

     <IfModule mod_rewrite.c>
     RewriteEngine On
     RewriteBase /
     RewriteRule ^index\.php$ - [L]
     RewriteCond %{REQUEST_FILENAME} -f
     RewriteCond %{REQUEST_FILENAME} -d
     RewriteRule . /index.php [L]
     </IfModule>

您可以调整-f-d包含!和/或更改文件名类型以满足您的特定需求。


查看完整回答
反对 回复 2022-12-22
  • 2 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信