在特定文件夹上强制使用 http,并在所有其他文件夹上维护 https

在特定文件夹上强制使用 http,并在所有其他文件夹上维护 https

我有一个如下的网站https://domain.com/app/该网站有一个存放 Web 服务的文件夹。该文件夹的路径为https://domain.com/app/ws/api.php所有这些都运行正常,但是我希望 Web 服务路径为 http 而不是 https(从 api 调用中删除 https)我该如何实现这一点?我的 htaccess 如下所示

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]


 <VirtualHost *:80>
    DocumentRoot /var/www/domain.com/public_html
   ServerName www.domain.com
   ServerAlias domain.com 
   Redirect permanent / https://domain.com
  <Directory /var/www/domain.com/public_html>
        AllowOverride All
  </Directory>
 </VirtualHost>

<VirtualHost *:443>
   DocumentRoot /var/www/domain.com/public_html
   ServerAdmin [email protected]
   ServerName  www.domain.com
   ServerAlias domain.com
   ErrorLog  /var/www/domain.com/log/error.log
   CustomLog /var/www/domain.com/log/access.log combined

   SSLEngine On
   SSLCertificateFile /etc/ssl/domain.com.crt
   SSLCertificateKeyFile /etc/ssl/domain.com.key
   SSLCertificateChainFile /etc/ssl/domain.com.ca-bundle

<Directory /var/www/domain.com/public_html>
    AllowOverride All
</Directory>

答案1

Redirect permanent / https://example.com

HTTP 虚拟主机中的错误是导致仅支持 HTTPS 连接的原因。

使用Rewrite更加合适。

RewriteEngine On
RewriteRule ^(ws)($|/) - [L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

第一条规则将结束重写处理,因此目录 /ws/.... 将不会重定向到 HTTPS。

删除 apache 虚拟主机中的重定向

相关内容