Назад | Перейти на главную страницу

правила перезаписи apache https в каталог

Я хочу, чтобы apache:

  1. перенаправить пользователей http на https
  2. если они обращаются к http (s): //example.com/1234, перенаправляют на / view / 1234

Я пробовал разные вкусы, но не могу заставить их работать. Когда пользователь получает доступ к веб-сайту, он перенаправляется на https: //, однако я не могу получить / {numeric} для перенаправления на add / view /. Числовое правило работало нормально, пока я не включил перенаправление https.

Я пробовал использовать RewriteCond% {HTTPS} = on, но это вызывает 500 ошибок.

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://domain.example.org/$1 [R,L]
RewriteRule ^(\d+)$ https://domain.example.org/view/$1 [R=301,L]

Это не сработает для вас?

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Попробуйте это проверить:

http://htaccess.madewithlove.be/

Хорошо, похоже, вы действительно хотите что-то вроде этого:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteCond %{REQUEST_URI} /1234
RewriteRule (.*) https://%{HTTP_HOST}/view%{REQUEST_URI} [L]

Замените первый RewriteCond на:

RewriteCond %{SERVER_PORT} !^443$

Это будет неожиданный ответ, но я считаю, что правила перезаписи совпадают в порядке очереди. Поскольку структура пути меняется, готов поспорить, http://domain.example.org/1234 пользователи перенаправляются на эквивалент https, но без изменения пути. Попробуйте изменить порядок правил, и вы приблизитесь к полному решению.

Если это не сработает, дайте мне знать, и я запущу экземпляр Apache, и мы посмотрим, что мы можем получить в тандеме.

Спасибо за вашу помощь.

Наконец-то это работает. Я использовал следующее:

RewriteCond %{HTTPS} off
RewriteRule ^/?(.*) https://domain.example.org/$1 [R,L]
RewriteRule ^([0-9]+)/?$    https://%{HTTP_HOST}/view/$1    [NC,L] 

Таким образом, к любым числовым запросам добавлен / view, любые попытки доступа к сайту с http: // перенаправляются на https: //. Кажется, работает хорошо.