apache上的Letsencrypt虚拟主机与htaccess

apache上的Letsencrypt虚拟主机与htaccess,apache,.htaccess,lets-encrypt,certbot,Apache,.htaccess,Lets Encrypt,Certbot,我有一个网站,我正在努力通过.htaccess使用virtualhost配置。正在考虑我是否有权访问 我所做的重写是为了让php slim框架删除index.php RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [QSA,L] 当我更改从.htaccess移动到生产服务器时,路由失败。我意识到:80虚拟主机并没有遵循

我有一个网站,我正在努力通过.htaccess使用virtualhost配置。正在考虑我是否有权访问

我所做的重写是为了让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?

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

如何在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或任何您想放置它的地方定义通用配置指令

使用加密证书(无论是letsencrypt还是任何其他替代方案)的全部目的是能够使用https协议,因此端口443。您不想继续使用http,所以端口80,您想停用它。@arkascha我知道443是ssl。certbot似乎使用80中的东西来构建443 vhost。这就是我的困境。那么?为什么这是个问题?设置证书的脚本不关心路径,它实际上启动一个单独的http服务器,该服务器与正常运行的http服务器无关。重写没有发生,也不需要在那个时候进行。@arkascha我关心的不是443。现在我正在复制http和https vHost中的逻辑。由于certbot使用http构建https,我想知道是否最好将其保留在htaccess中,或者是否有办法在vhost conf文件中管理它。我发布了对该特定问题的答案。但我仍然无法理解为什么您认为必须在http主机中配置这样的规则。无论如何,玩得开心!我面临的问题是,我使用certbot生成ssl vhost,它通过创建另一个文件来实现这一点。这个答案实际上让我意识到我不需要certbot来为我生成它。我可以自己做。