我在 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。