Я хочу использовать mod_rewrite, чтобы гарантировать, что определенные страницы обслуживаются с помощью SSL, а все другие обычно, но у меня возникают проблемы с его работой
Это работает (перенаправление на SSL, когда URI запроса предназначен для пользователей или корзины)
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} users [OR]
RewriteCond %{REQUEST_URI} cart
RewriteRule ^(.*)$ https://secure.host.tld/$1 [R,L]
Итак, чтобы пользователь не продолжал просматривать сайт с помощью ssl, при запросе других uris я подумал о следующем, но не работает: (когда порт 443 и запрос uri не является одним из uris, который необходимо обслуживать по ssl, перенаправить обратно на обычный хост)
RewriteCond %{SERVER_PORT} 443
RewriteCond %{REQUEST_URI} !^/users [OR]
RewriteCond %{REQUEST_URI} !group
RewriteRule ^/?(users|groups)(.*)$ http://host.tld/$1 [R,L]
Любая помощь?
Спасибо
Ваш код:
RewriteCond %{SERVER_PORT} 443 RewriteCond %{REQUEST_URI} !^/users [OR] RewriteCond %{REQUEST_URI} !group RewriteRule ^/?(users|groups)(.*)$ http://host.tld/$1 [R,L]
Если безопасный, а не пользователи или группа ... Я думаю, вы хотите, если безопасны, а не пользователи, а не группа. Но затем вы переписываете ТОЛЬКО пользователей и группы на http:, что, кажется, не соответствует тому, что вы хотите.
Итак, вы могли:
RewriteCond %{SERVER_PORT} 443 RewriteCond %{REQUEST_URI} !^/(users|group) RewriteRule ^(.*)$ http://host.tld/$1 [R,L]
Поскольку вы исключили пользователей / группу в своих правилах, ваше правило перезаписи никогда не увидит их.
Однако вместо использования SERVER_PORT подумайте:
RewriteCond %{HTTPS} off
и
RewriteCond %{HTTPS} on
Чтобы упростить отладку,
RewriteLog /tmp/rewritelog
RewriteLogLevel 9
и следите за этим файлом журнала, когда делаете запросы, и вы сможете лучше понять, что происходит.
Это не похоже на хороший способ использования SSL. Может быть способ испортить запрос на получение, чтобы полностью избежать этой перезаписи. Почему вы должны использовать перезапись, чтобы получить эту функциональность.
может я ошибаюсь, но этот код выглядит проблематично.
Полоса SSL! http://www.youtube.com/watch?v=Dd5qGS-5C0I