Редирект по симлинку через htaccess

Я использую Capistrano для развертывания репозиториев Git, и в настоящее время у меня проблема с перенаправлением с использованием .htaccess и установки символической ссылки.

Вот краткое изложение:

  • У меня есть dev.example.com в качестве поддомена на MediaTemple GS.
  • В папке dev.example.com у меня есть клиентские папки, например. dev.example.com/client
  • В разделе dev.example.com/client Capistrano есть /releases, /shared, /tmp и символическая ссылка /current, указывающая на папку /releases (поэтому при любом посещении /current всегда отображается текущая версия сайта)

В идеале я хотел бы, чтобы любой, кто посещает dev.example.com/client, был перенаправлен в эту папку /current, чтобы он продолжал следовать по пути символической ссылки.

Я поместил следующее в .htaccess в папку /client:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^client.*$ /current [L]

Но с треском проваливается :(

Обычно это папка /html, и это так же просто, как использование символической ссылки: ln -s ./current ./html, но, учитывая, что это подкаталог, /html не имеет значения. (Думаю, я мог бы создать каталог /html и выяснить, как сделать так, чтобы посещения /client переходили в /html, но это кажется безумием).

Любая помощь будет принята с благодарностью!


person Monkeybones    schedule 17.12.2013    source источник


Ответы (1)


Если вы поместили правила в папку /client, вам не нужно сопоставлять их с client, так как они автоматически удаляются. Попробуйте просто:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^$ /current/ [L]

Или, если вы хотите, чтобы запросы на /client/whatever также направлялись на /current/whatever:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ /current/$1 [L]
person Jon Lin    schedule 17.12.2013
comment
Привет, Джон. Спасибо за ответ. В итоге я использовал current без косой черты, так как это символическая ссылка (для тех, у кого есть Capistrano, кто читает это позже), похоже, это перенаправление. Есть ли чистый способ, чтобы он dev.example.com/client/ вместо dev.example.com/client/current/ отображался как URL-адрес? Это последняя часть этой головоломки! Спасибо. - person Monkeybones; 17.12.2013