Как заставить mod_rewrite * не * выполнять расширение домашнего каталога при использовании .htaccess - PullRequest
3 голосов
/ 14 декабря 2010

Filepath: /Users/user_name/Sites/example.com

Доступен для просмотра по адресу: http://localhost/~user_name/example.com/

В дочернем каталоге (chrome) я получил .htaccess, например:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^rgba\((\d{1,3}%?,\s?\d{1,3}%?,\s?\d{1,3}%?,\s?[0-1]?\.?\d+)\)$ rgba.php?rgba=$1 [PT]

Это соответствует запросу вроде:

http://localhost/~user_name/example.com/chrome/rgba(255,255,255,0.5)

и должно переписать запрос на:

http://localhost/~user_name/example.com/chrome/rgba.php?rgba=(255,255,255,0.5)

Я поместил rgba.php в каталог chrome.Тем не менее я получаю сообщение об ошибке:

The requested URL /Users/user_name/Sites/example.com/chrome/rgba.php was not found on this server.

Я прочитал часть в руководстве о расширении домашнего каталога и флаге [PT], но это не имеет значения.

Если я поставлюvhost указывает на каталог example.com, который работает.Я хотел бы, чтобы он работал в обоих направлениях = P

Так как мне это сделать?

Я запускаю Apache / 2.2.15 (Unix) на Mac OS X

EDIT AllowOverride установлен на All для каталога пользователей Sites.Если бы это было не так, перезапись не должна была бы работать вообще.

Ответы [ 3 ]

1 голос
/ 28 февраля 2012

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

1 голос
/ 01 июня 2012

Святой Бог, который расстраивал.Но у меня это работает.

Я перепробовал кучу вещей.Я думал , что флаг PT на RewriteRule это исправит, но нет.

Я все еще не знаю, как остановить расширение домашнего каталога, но я нашел обходной путь.Прямо перед RewriteRule используйте RewriteBase /~user_name/example.com/chrome/.Это переопределяет префикс перезаписи (запись в журнале из моей конфигурации):

<SNIP> (2) [perdir /Users/colin/Sites/ajaxtest/] trying to replace prefix /Users/colin/Sites/ajaxtest/ with /~colin/ajaxtest/

ОБНОВЛЕНИЕ

Это решение работает несколько, но, похоже, дважды запускает механизм перезаписи... один раз для внутреннего перенаправления, а затем снова.В итоге я использовал VirtualHost, как и другой отправитель.

0 голосов
/ 14 декабря 2010

Разрешить переопределения в вашем файле конфигурации для ваших домашних каталогов.

...