通过 letsencrypt 排除 https 重定向中的某些路径

通过 letsencrypt 排除 https 重定向中的某些路径

我在 lamp stack 上有一个应用程序。该应用程序使用 let's encrypt SSL 证书进行 https。该应用程序的一个功能是允许用户在其他网站的 iframe 中嵌入某些内容。

使用 Let's Encrypt 认证脚本,我已强制所有流量重定向到 https。我希望允许嵌入路径为 http 或 https。

这是我的虚拟主机配置文件:

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

  ServerAdmin [email protected]
  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

特定规则的重写条件在逻辑上按 AND 连接在一起,以确定是否应应用该规则。您可以使用!它来否定条件。您应该能够执行类似以下操作

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。

相关内容