Наш domain.com/app/index.php загружает domain.com/blog в iframe.
Итак, мои правила перенаправления должны быть такими:
- domain.com/ => /app/index.php
- domain.com/blog(.*) => /app/index.php?(.*)
Второе правило существует, потому что, если кто-то хочет напрямую перейти в блог, мы сначала запускаем наше приложение и помещаем блог в iframe и добавляем входящую строку запроса к тегу iframe src, чтобы он открывался не на главной странице, а по запрошенному URL.
Проблема в том, что, поскольку я перенаправляю все по своему первому правилу, iframe заканчивается бесконечным циклом. Он бесконечно пытается поместить себя в другой iframe внутри своего собственного iframe.
Есть ли способ назначить Env var, чтобы при перенаправлении оно не повторялось?
Или, чтобы четко решить проблему, я никогда не хочу, чтобы блог открывался без приложения. Каким должен быть мой htaccess?
Спасибо д
ps: мы хотим сделать это на htaccess, поскольку перенаправление php + js неэффективно и некрасиво.
Вы можете исследовать RewriteCond директива для условного применения RewriteRule. Однако в этом не должно быть строгой необходимости, если ваше RewriteRule явно соответствует началу и концу ожидаемого URL-адреса для перенаправления, например.
RewriteRule ^/$ /app/index.php [L]
Обратите внимание, что перенаправление может быть внутренним или внешним. Если вы явно укажете [R]
к вашему RewriteRule, тогда браузер будет проинформирован о новом URL-адресе для выборки. В противном случае Apache попытается получить переписанное правило изнутри, не сообщая браузеру о фактическом полученном URL.
Наконец, вы можете использовать директивы mod_rewrite (RewriteEngine
, RewriteCond
, RewriteRule
) в твоем .htaccess
файл.
Я опубликовал учебник об избежании бесконечных циклов, которые могут оказаться полезными. При создании правил перезаписи для URL без косой черты возникает большая проблема. Надеюсь, это поможет вам понять. -разведчик
Вы можете попробовать свои силы с mod_rewrite. Примерно так в .htaccess:
RewriteEngine On
RewriteRule /blog/(.*) /app/index.php?$1 [R]
RewriteRule ^index.php$ /app/index.php [R]
Теоретически уже существует env var, который выполняет эту работу:
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
Но я не уверен, работает ли это ... (мне никогда не приходилось использовать эту функцию.)