2017-02-21 24 views
1

Я запускаю небольшой сайт bootstrap themes, который позволяет пользователям загружать темы и шаблоны.перенаправлять на SSL, за исключением одного URL-адреса

я смог перенаправить любое нерастворимое соединение SSL с HTTPS через мой файл .htaccess со следующим:

RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

мне теперь нужно перенаправить пользователя не-SSL для одной страницы, в частности. Это страница, содержащая iframe, которая загружает предварительный просмотр с сайта авторов темы, и эти сайты не всегда обслуживаются через SSL.

URL всегда имеет слово «предварительный просмотр», которому предшествует доминирование.

Вот то, что я пытался, к сожалению, без успеха:

RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} !^/preview [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

RewriteCond %{HTTPS} on 

RewriteCond %{REQUEST_URI} ^/preview [NC] 
RewriteRule^http://%{HTTP_HOST}%{REQUEST_URI} [NC,L,R] 

Вот два примера:

без предварительного просмотра ссылка: http://www.bootstrapcovers.com/bootstrap-themes/all/free/sort.downloads/page.1

просмотр ссылка http://www.bootstrapcovers.com/preview/1/adminlte-admin-control-panel

Любая идея, почему она не работает или что мне не хватает в файле .htaccess?

Спасибо, -Поль

ответ

0

Использование THE_REQUEST вместо REQUEST_URI, которые могут изменяться в связи с другими модулями или правилами:

RewriteEngine On 

RewriteCond %{HTTPS} off 
RewriteCond %{THE_REQUEST} !\s/+preview [NC] 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301] 

RewriteCond %{HTTPS} on 
RewriteCond %{THE_REQUEST} \s/+preview [NC] 
RewriteRule^http://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301] 

# other rules go here 

Кроме того, убедитесь, чтобы очистить кэш браузера.

+0

хороший, это сработало! В чем разница между REQUEST_URI и THE_REQUEST? – Paul

+0

'THE_REQUEST' - это оригинальный веб-запрос, полученный Apache от клиентов, и он не изменяется из-за других правил. – anubhava

+1

отлично знать ... еще раз спасибо за помощь. Я потратил слишком много часов на это :) – Paul