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

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

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

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

# 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.

1 ответ

Решение

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

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.

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