Как мне перенаправить из папки на поддомене в основной домен

#mod-rewrite #redirect #login #subdomain #phpbb3

#переписать мод #перенаправление #аутентификация #поддомен #phpbb3

Вопрос:

Немного дополнительной информации…

У PHPBB есть способ перенаправить вас после входа на страницу, которую вы просматривали ранее, даже если вы используете форму входа извне на своих собственных страницах. Однако они решили, что это должен быть относительный путь в пределах вашего собственного домена. Что не совсем здорово, если у вас есть форум на поддомене, подобном forum.mydomain.com …

Пример из их wiki: <input type="hidden" name="redirect" value="./somefile.html" />

Чтобы обойти проблему с поддоменом, я решил добавить к нему указание на перенаправление на главную страницу, например <input type="hidden" name="redirect" value="./redirect/frontpagenews.php" />

Итак, если вы используете форму входа на странице, http://mysite.com/frontpagenews.php URL перенаправления форума будет выглядеть следующим образом forum.mysite.com/redirect/frontpagenews.php (это работает, форум создает эту ссылку, чтобы вернуться к ней после входа). Все, что ему нужно, это правило перезаписи для обнаружения этого, чтобы оно действительно отправило вас обратно в http://mysite.com/frontpagenews.php

Вопрос…

Как мне перейти из forum.mysite.com/redirect/*anything* в mysite.com/*anything* ?

Я занимаюсь этим уже некоторое время, и я думаю, что приведенный ниже код должен работать, за исключением того, что это не так. Я поместил это выше других правил перезаписи форума в файле htaccess в forum.mysite.com поскольку, вероятно, должно быть нормально, если это первое правило, которое проверяется.

 RewriteCond %{HTTP_HOST} ^forum.mysite.com/redirect/(.*)$ [NC]
RewriteRule (.*) http://mysite.com/$1 [QSA,L,NC]
  

Тоже пробовал это как условие, но никакой радости:

 RewriteCond %{REQUEST_URI} /redirect/(.*)$ [NC]
  

Ответ №1:

HTTP_HOST совпадает только с именем хоста, а не с путем. Путь должен быть частью RewriteRule. Предполагая, что файл .htaccess, который вы редактируете, находится в forum.mysite.com root (как в эквиваленте: forum.mysite.com/.htaccess ), это должно выглядеть следующим образом:

 RewriteCond %{HTTP_HOST} ^forum.mysite.com$ [NC]
RewriteRule ^redirect/(. )$ http://mysite.com/$1 [L,NC,R]
  

Вам не понадобится QSA в скобках правила, потому что строка запроса будет добавлена в любом случае (если у вас нет ? в целевом объекте, например http://mysite.com/$1?p=1 ).

Это перенаправит браузер с forum.mysite.com/redirect/*anything* на mysite.com/*anything*