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

Проблема перенаправления с подпапкой на поддомен на общем хосте

Вот ситуация: у меня есть несколько разных веб-проектов, работающих на одном общем хосте. Проект «А» доступ через поддомен (subA.mydomain.com) пока проект "Б" это главный mydomain.com

И A, и B являются символическими ссылками внутри папки public_html хоста:

ln -s /home/myhost/ProjectA ~/public_html/subA
ln -s /home/myhost/ProjectB ~/public_html/main

Поддомен (проект А) работает нормально и сайт работает на нем. Для 'B' который является основным доменом, я использовал .htaccess, чтобы указать основной домен на подпапку, как написано Вот. Сайт домена тоже работает нормально.

Проблема в том, когда я mydomain.com/subA, веб-сайт субдомена (проект А) открывается. Я попытался добавить правила перенаправления, чтобы указать mydomain.com/subA -> subA.mydomain.com вот так:

RewriteCond %{HTTP_HOST} ^mydomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.mydomain.com$
RewriteRule ^subA\/?$ "http\:\/\/subA\.mydomain\.com\/" [R=301,L]

Но URL-адрес все еще читается mydomain.com/subA а показанный веб-сайт - это проект A (с отсутствующими изображениями и статическими файлами, очевидно, поскольку это другой веб-проект).

Почему не работает перенаправление?

Кажется, сработала следующая строка (и удалите более ранний код перенаправления с регулярными выражениями):

RedirectMatch 301 /subA/ http://subA.mydomain.com/

Спасибо всем!

Если у вас нет RewriteBase / где-то, ^subA\/?$ ничего не будет соответствовать. Mod_rewrite просматривает весь URL-адрес, включая начальный /. Пытаться:

RewriteRule ^/subA/?$ http://subA.mydomain.com/ [R=301,L]

Также вы можете расслабиться на побеге. Это не больно, но и ничему не помогает, и читать труднее.

URI запроса для mydomain.com/subA - / subA (обратите внимание на отсутствие косой черты в конце), который не будет соответствовать

измените свое правило перезаписи на

RewriteRule ^ subA http://subA.mydomain.com/ [R = 301, L]