当前位置: 首页 > 知识库问答 >
问题:

Apache Mod将所有传入URL重写为https://www

钱渊
2023-03-14

我想重定向所有传入网址到我的网站到一个单一的网址为规范化的目的。

应满足以下重定向条件

  1. http://example.com

用httpd.conf编写的当前重写规则如下

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L,NE]

根据以上规则,我可以实现第1条、第2条和第4条规则,但第3条规则对我不起作用。欢迎提出任何建议。

共有2个答案

宁卓
2023-03-14

如果您正在谈论为SEO目的进行规范化,那么您还应该将此元标记添加到网页的标题部分:

<link rel="canonical" href="https://www.example.com/" />

这样做的目的是告诉搜索引擎,无论使用什么url来访问此页面,这都是首选url,应该为其编制索引。

詹正浩
2023-03-14

站点的HTTPS和HTTP版本的定义必须(?)出现在不同的virtualhost条目下(除非您在httpd前面使用某些代理)。

这使得两个VirtualHost中的配置之间很容易产生差异。确保端口80和端口443的VirtualHost中重定向的配置相同

做到这一点最简单的方法是使用包含语句,并在两个虚拟主机定义中引用一个公共文件

例如,将这些重写放在一个文件base rewrite中。inc在根配置目录中(/etc/apache2/base rewrite.inc在debian/ubuntu中;/etc/httpd/base rewrite.inc在Redhat中):

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L,NE]

然后在虚拟主机定义中,包括此文件:

<VirtualHost *:80>
    # HTTP default virtualhost
    ServerName www.example.com
    DocumentRoot /var/www/html/

    Include base-rewrite.inc
</VirtualHost>

<VirtualHost *:443>
    # HTTPS default virtualhost
    ServerName www.example.com
    DocumentRoot /var/www/html/

    # An example SSL config, but use your certificate files
    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

    Include base-rewrite.inc
</VirtualHost>

这将保持重写的一致性,并使维护和更改它们变得容易

 类似资料:
  • 我想将所有可能的url组合重定向到单个路径。 例如。 http:/例如。com--- https:/例如。com-- 超文本传输协议/example.com/abc/cde 我可以按照mod_rewrite设置处理1和3的情况,但不能执行2重定向,这有人可以帮我。 为了避免链接转换,我在网站示例中使用了escape one/in。 重新启动引擎 重写Cond%{HTTPS}关闭 重写Cond%{H

  • 我刚刚使用Firebase CLI初始化了一个静态托管项目。当您启用“配置为单页应用程序”选项时,会发生什么情况?我想知道到底修改了哪些文件,以及这对Firebase后端有什么影响。

  • 我们的整个网站将通过https提供服务。我在每条路线上都有“https”。但是,如果他们试图通过http将其重定向到https,我该如何将其重定向到https?

  • 我刚刚使用Firebase CLI初始化了一个静态托管项目。当您启用“配置为单页应用程序”选项时,具体会发生什么情况?我正在寻找关于哪些文件被修改的描述,以及这对Firebase后端有什么样的影响。

  • 我已经在.ebExtensions文件夹中用以下代码创建了一个配置文件 我确信aws会考虑我的配置,因为de ssl工作得很好。但http块不工作。没有重定向。 也许我的问题是关于重写EB的原始nginx配置,你知道如何实现这一点吗? 谢谢你

  • "The great thing about mod_rewrite is it gives you all the configurability and flexibility of Sendmail. The downside to mod_rewrite is that it gives you all the configurability and flexibility of Send