Виртуальный хост Letsencrypt против htaccess на apache

У меня есть сайт, над которым я работал, чтобы использовать конфигурацию виртуального хоста через .htaccess. Выяснение, есть ли у меня доступ, который я должен.

Переписывание, которое у меня есть, было для php slim framework, чтобы удалить 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? Или есть способ обновить ssl vhost с помощью certbot, когда я вношу изменения в порт 80 по умолчанию?

Весь смысл использования сертификата шифрования (будь то letsencrypt или любая другая альтернатива) заключается в том, чтобы иметь возможность использовать протокол https, поэтому порт 443. Вы не хотите продолжать использовать http, поэтому порт 80 вы хотите деактивировать. тот.

arkascha 27.07.2019 10:27

@arkascha Я понимаю, что 443 - это ssl. Похоже, что certbot использует то, что есть в 80, для создания виртуального хоста 443. Отсюда моя дилемма.

nerdlyist 27.07.2019 19:13

Так? Почему это проблема? Сценарий настройки сертификатов не заботится о путях, он фактически запускает отдельный http-сервер, который не имеет ничего общего с нормально работающим. Перезапись не происходит и не требуется в это время.

arkascha 27.07.2019 20:49

@arkascha Меня беспокоит не 443. Прямо сейчас я дублирую логику в http и https vhosts. Поскольку certbot использует http для создания https, мне интересно, лучше ли просто оставить это в htaccess или есть способ управлять им в файлах конфигурации vhost.

nerdlyist 28.07.2019 07:07

Я разместил ответ на этот конкретный вопрос. Но я все еще не понимаю, почему вы думаете, что вам вообще нужно настраивать такие правила на http-хосте. В любом случае, получайте удовольствие!

arkascha 28.07.2019 11:04
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
5
129
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Учитывая ваши комментарии к вопросу, теперь я вижу, что ваш фактический вопрос:

«Как можно совместно использовать директивы конфигурации между разными хостами на http-сервере apache?»

Это легко сделать с помощью оператора 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, и он делает это, создавая другой файл. Этот ответ на самом деле заставил меня понять, что мне не нужен certbot, чтобы сгенерировать его для меня. Я могу сделать это сам.

nerdlyist 29.07.2019 04:08

Другие вопросы по теме