Letsencrypt 虚拟主机与 apache 上的 htaccess

Letsencrypt virtual host vs htaccess on apache

我有一个网站,我正在努力将其移动到通过 .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?

考虑到您对问题的评论,我现在知道您的实际问题是:

"How is it possible to share configuration directives between different hosts in an apache http server? "

使用 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(或任何您想放置它的地方)中定义通用配置指令。