У меня есть сайт, который полностью обслуживается через ssl. Однако мне нужно разрешить внешнее соединение на одной странице через http.
В настоящее время в моем http.conf у меня есть
<VirtualHost *:80>
..
Redirect permanent / https://www.mysite.com/
..
</VirtualHost>
Я хочу добавить здесь исключение для определенной страницы, которую я хочу обслуживать, и никогда через перенаправление если возможно как http ...
http://www.mysite.com/directory/page.php
Я попытался добавить следующее, но, конечно, это само по себе работает нормально, но в сочетании с тем, что у меня выше, оно создает циклы перенаправления.
<VirtualHost *:443>
..
RewriteEngine on
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^/directory/page$ http://www.mysite.com/directory/page.php [R=301,L]
..
</VirtualHost>
Попробуй это:
RewriteEngine on
RewriteCond %{HTTPS} on
RewriteRule ^/directory/page$ http://www.mysite.com/directory/page.php [R=301,L]
RewriteCond %{HTTPS} on
RewriteRule ^/directory/page.php http://www.mysite.com/directory/page.php [R,L]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/directory/page.php
RewriteRule ^/(.*) https://www.mysite.com/$1 [R,L]
Вот что в итоге сработало:
# Force HTTPS for entire site
RewriteCond %{HTTPS} !=on
RewriteCond %{THE_REQUEST} !^[A-Z]+\s/directory/page.*$
RewriteRule ^(.*)$ https://www.mysite.com/$1 [R=301,L]
# Force HTTP for a given page
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} ^/directory/page.*$
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L]