LINUX.ORG.RU

mod rewritе регулярные выражения.


0

1

Здравствуйте. Нужно чтобы mod rewrite, видя в урле /admin перекидывал на https. Yе силен в регулярных выражениях, написал

RewriteCond   %{HTTP_HOST} !^$\admin 
RewriteRule   ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} 
чота не але. Как правильно то написать?

★★★★★

одна такая строчка

RewriteRule ^admin/(.*)$ https://%{HTTP_HOST}/admin/$1 [NC,R=307,L]
должна заработать

xapienz
()
Ответ на: комментарий от val-amart

А RewriteRule c R=301 и не меняет протокол. Оно создаёт новый запрос и отправляет дальше по нему.

Deleted
()
Ответ на: комментарий от Deleted

так вот для тех кто не в курсе - «RewriteRule c R=301» означает послать в ответ HTTP Response с кодом 301, т.е. редирект. никаких «новых запросов» оно не создает, учите матчасть перед тем как умничать.

val-amart ★★★★★
()
Ответ на: комментарий от val-amart

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

Deleted
()
Ответ на: комментарий от Deleted

парень, я как-бы тебе пытаюсь обьяснить, что реврайт и редирект - это совершенно разные механизмы, которые приводят к разным действиям на стороне сервера и клиента. а то, что modrewrite умеет слать редиректы - нерелевантно, от этого они не перестают быть редиректами. насчет знал-незнал:

# grep 'R=' */* | wc -l
   13053

val-amart ★★★★★
()
Ответ на: комментарий от val-amart

парень, я как-бы тебе пытаюсь обьяснить, что реврайт и редирект - это совершенно разные механизмы

Но зачем? Суть в том, можно или нельзя через реврайт с редиректом перенапраить клиента с HTTP на HTTPS. Вы утверждаете, что реврайт для этого не предназначен, а я  — что его можно использовать.

которые приводят к разным действиям на стороне сервера и клиента.

Хорошо. Чем на стороне клиента отличается редирект, посланный через директиву RewriteRule с опцией R=301 от редиректа, посланного через директиву Redirect, и от редиректа который я отослал через php-шную функцию header() с параметром 'Location'?

# grep 'R=' */* | wc -l
   13053
И я должен купиться на этот мусор?

Нет, если я неправ, я хочу знать, почему я неправ. Но я требую обоснованных доводов.

Deleted
()
Ответ на: комментарий от Deleted

ты не неправ. просто ты неясно выражаешь свои мысли, и изначально путал терминологию.

Чем на стороне клиента отличается редирект, посланный через директиву RewriteRule с опцией R=301 от редиректа, посланного через директиву Redirect, и от редиректа который я отослал через php-шную функцию header() с параметром 'Location'


ничем. я и не говорил что они отличаются.

Суть в том, можно или нельзя через реврайт с редиректом перенапраить клиента с HTTP на HTTPS. Вы утверждаете, что реврайт для этого не предназначен, а я — что его можно использовать.


а теперь я сформулирую. я утверждаю:

Суть в том, что через реврайт нельзя перенапраить клиента с HTTP на HTTPS.

ты утверждаешь:

Суть в том, что через modrewrite можно перенапраить клиента с HTTP на HTTPS.

Разницу улавливаешь? Я говорю про реврайт, вполне обычную процедуру, которая кстати реализуется не только ModRewrite в апаче. Мое изначальное утверждение:

тебе нужно делать не реврайт, а слать редирект.

Разве здесь что-то сказано о том, как слать редирект? Я пытался подтолкнуть человека на самостоятельное осмысливание.

На этом предлагаю закончить, ок?

val-amart ★★★★★
()
Ответ на: комментарий от val-amart

Я говорю про реврайт, вполне обычную процедуру, которая кстати реализуется не только ModRewrite в апаче

  • Но в Apache такими процедурами занимается только mod_rewrite;
  • учитывая специфику оп-поста, становится совершенно ясно, что речь идёт о mod_rewrite;
  • топикстартеру нужны функции RewriteEngine совместно с возможностью редиректа, о чём он сам непреминул указать.

Таким образом применение понятия «реврайт» в широком смысле здесь не обосновано.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.