Назад | Перейти на главную страницу

Исключить определенные пути при перенаправлении https с помощью letsencrypt

У меня на стеке лампы есть приложение. Приложение использует SSL-сертификаты Let's encrypt для https. Одна из функций приложения - позволить пользователям встраивать определенный контент в iframe на других сайтах.

Используя скрипт сертификации Let's Encrypt, я принудительно перенаправил весь трафик на https. Я надеюсь, что пути для встраивания будут http или https.

Вот мой файл конфигурации виртуального хоста:

# file: /etc/apache2/sites-available/mysite.com.conf
<VirtualHost *:80>

  ServerAdmin me@server.com
  ServerName mysite.com

  DocumentRoot /var/www/mysite.com

  <Directory />
    Options FollowSymLinks
    AllowOverride None
  </Directory>

  <Directory /var/www/mysite.com>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

  # Log file locations
  LogLevel warn
  ErrorLog ${APACHE_LOG_DIR}/mysitecom_error.log
  CustomLog ${APACHE_LOG_DIR}/mysitecom_access.log combined

  RewriteEngine on
  RewriteCond %{SERVER_NAME} =mysite.com
  RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>

Я бы хотел добавить такое условие:

If URI begins with: embed/video
Do not redirect to https. Allow either http or https for this path.

При сохранении перенаправления всего остального трафика на https.

Условия перезаписи для конкретного правила логически объединяются вместе, чтобы определить, следует ли применять правило. Ты можешь использовать ! отрицать условие. Вы должны уметь делать что-то вроде

RewriteEngine on
RewriteCond %{SERVER_NAME} =exmple.com
RewriteCond %{REQUEST_URI} !^/embed/video
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Если имя сервера - example.com и URI запроса не начинается с / embed / video, тогда перенаправьте на https.