【问题标题】:Letsencrypt virtual host vs htaccess on apacheLetsencrypt 虚拟主机与 apache 上的 htaccess
【发布时间】:2019-12-04 07:43:09
【问题描述】:

我有一个网站,我正在努力迁移以通过 .htaccess 使用虚拟主机配置。弄清楚我是否应该拥有访问权限。

我的重写是为 php slim 框架删除 index.php

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

当我进行从 .htaccess 移动到生产服务器路由的更改时失败了。我意识到重写并没有在 :80 虚拟主机上进行,而是在 :443 letsencrpyt 虚拟主机中指定。

在紧要关头,我只是将上面的重写移到了letsencrpyt中,然后就可以工作了。

似乎 certbot 使用 :80 端口来创建 :443 ,所以我无法删除它而只能使用生成的端口。现在我只是在复制两者之间的逻辑。

我现在对这种类型的重写有疑问,我应该把它留在 .htaccess 中吗?或者当我对默认端口 80 进行更改时,有没有办法使用 certbot 更新 ssl vhost?

【问题讨论】:

  • 使用加密证书(无论是 letencrypt 还是任何其他替代方案)的全部意义在于能够使用 https 协议,因此端口 443。你不想继续使用http,所以端口 80,你想停用它。
  • @arkascha 我知道 443 是 ssl。 certbot 似乎使用 80 中的内容来构建 443 虚拟主机。因此我的困境。
  • 所以?为什么这是个问题?设置证书的脚本不关心路径,它实际上启动了一个单独的 http 服务器,与正常运行的服务器无关。重写不会发生,当时也不需要。
  • @arkascha 我关心的不是 443。现在我在 http 和 https 虚拟主机中复制逻辑。由于 certbot 使用 http 来构建 https,我想知道是否最好将其留在 htaccess 中,或者是否有办法在 vhost conf 文件中管理它。
  • 我发布了对该特定问题的答案。但是我还是不明白为什么你认为你必须在http主机中配置这样的规则。不管怎样,玩得开心!

标签: apache .htaccess lets-encrypt certbot


【解决方案1】:

考虑到您的问题,我现在看到您的实际问题是:

“如何在 apache http 服务器中的不同主机之间共享配置指令?”

使用Include 语句很容易做到这一点:

<VirtualHost *:80>
        # include the rules common for http and https
        Include sites-includes/shared-config.inc
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
        # include the rules common for http and https
        Include sites-includes/shared-config.inc
</VirtualHost>
</IfModule>

使用它,您现在可以在文件 sites-includes/shared-config.inc(或您想要放置的任何位置)中定义通用配置指令。

【讨论】:

  • 我面临的问题是我使用 certbot 来生成 ssl vhost,它通过创建另一个文件来实现。这个答案实际上让我意识到我不需要 certbot 来为我生成它。我可以自己做。
猜你喜欢
  • 2014-04-22
  • 1970-01-01
  • 2011-05-13
  • 2011-09-10
  • 2011-06-19
  • 2014-06-15
  • 2011-10-14
  • 2019-08-25
  • 2012-04-26
相关资源
最近更新 更多