правила перезаписи заканчиваются тем, что «страница не найдена» на страницах https - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть несколько правил переписывания, таких как приведенные ниже на моем сайте

 ^product/([0-9a-zA-Z]+)/([0-9a-zA-Z]+)$ /index.php?action=product&category=$1&type=$2

У меня также установлен самоподписанный сертификат ssl и несколько страниц, на которых php перенаправляет на https.Когда я нахожусь на такой странице https и щелкаю ссылку, которая соответствует приведенным выше правилам перезаписи, я в конечном итоге на странице ошибки «Не найдено»

Как сказать apache, что все правила перезаписи должны читаться относительно http, а неhttps?

РЕДАКТИРОВАТЬ: я разобрался, добавив копию правил перезаписи в: 443 Виртуальный хост

Ответы [ 2 ]

0 голосов
/ 16 февраля 2012

Вы можете попробовать:

RewriteCond %{HTTPS} on

Посмотрите htaccess HTTPS / SSL Советы, хитрости и хаки

0 голосов
/ 16 февраля 2012

Предполагая, что ваш Apache обслуживает HTTPS на стандартном порту, вы можете добавить условие перед правилом:

RewriteCond %{SERVER_PORT} =443
RewriteRule ...

РЕДАКТИРОВАТЬ: Есть еще одна переменная, вы можете проверить (и она есть в документации тоже):

HTTPS

Будет содержать текст «включено», если соединение использует SSL / TLS, или «выключено» в противном случае. (Эту переменную можно безопасно использовать независимо от того, загружен ли mod_ssl).

Так что это должно быть лучше, независимо от того, на какой порт доставляется SSL:

RewriteCond %{HTTPS} =off
RewriteRule ...
...