У меня есть сайт, который использует относительные пути для всех URL-адресов. Я просто добавил корзину покупок, чтобы две или три страницы проверки использовали HTTPS вместо HTTP. Моя проблема заключается в том, что пользователь находится в середине пути через проверку и нажимает ссылку на навигацию или что-то похожее на эту страницу с HTTPS, когда это страница, которая этого не требует (и в некоторых случаях она не может обрабатывать это из-за внешних файлов, например, GoogleMaps.js)Как использовать htaccess для перевода с https на http
2
A
ответ
3
На самом деле удивил себя и взломал что-то вместе. Перенаправляет все, что не www.domain.com/checkout
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^(/checkout)
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
2
вы можете попробовать сделать что-то вроде
RewriteCond %{SERVER_PORT} !^(80|8080)$
RewriteCond %{REQUEST_URI} !^(checkout|order|etc)$
RewriteRule ^(.*)$ http://yoururl$1
Я не уверен, если это работает, потому что я не проверял, но вы можете использовать ideea из тестирование для {SERVER_PORT}. Надеюсь, это поможет
0
Вам не нужно дополнительно RewriteCond
директиву, чтобы исключить /checkout/…
:
RewriteCond %{HTTPS} on
RewriteRule !^checkout(/|$) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Вы ответили это, пока я печатал свой ответ. Мне нравится твоя лучше! –
это почти то же самое. Фактически, используя% {HTTP_HOST}% {REQUEST_URI}, как и вы, было более элегантно :) – andi
Лучше не полагаться на номера портов. Проверьте, включен ли HTTPS (или выключен, если вы хотите включить его). – Scott