У меня есть сайт, над которым я работал, чтобы использовать конфигурацию виртуального хоста через .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 по умолчанию?
@arkascha Я понимаю, что 443 - это ssl. Похоже, что certbot использует то, что есть в 80, для создания виртуального хоста 443. Отсюда моя дилемма.
Так? Почему это проблема? Сценарий настройки сертификатов не заботится о путях, он фактически запускает отдельный http-сервер, который не имеет ничего общего с нормально работающим. Перезапись не происходит и не требуется в это время.
@arkascha Меня беспокоит не 443. Прямо сейчас я дублирую логику в http и https vhosts. Поскольку certbot использует http для создания https, мне интересно, лучше ли просто оставить это в htaccess или есть способ управлять им в файлах конфигурации vhost.
Я разместил ответ на этот конкретный вопрос. Но я все еще не понимаю, почему вы думаете, что вам вообще нужно настраивать такие правила на http-хосте. В любом случае, получайте удовольствие!
Учитывая ваши комментарии к вопросу, теперь я вижу, что ваш фактический вопрос:
«Как можно совместно использовать директивы конфигурации между разными хостами на 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, чтобы сгенерировать его для меня. Я могу сделать это сам.
Весь смысл использования сертификата шифрования (будь то letsencrypt или любая другая альтернатива) заключается в том, чтобы иметь возможность использовать протокол
https
, поэтому порт 443. Вы не хотите продолжать использоватьhttp
, поэтому порт 80 вы хотите деактивировать. тот.