Редактировать: все получилось, вот окончательная версия
RewriteCond $1 ^(.*?)/(.*)$
RewriteCond apps/%1/content/%2 -F
RewriteRule (.*) apps/%1/content/%2 [QSA,last]
Редактировать: Оригинальный вопрос внизу
Я близок к работе, вот правило в моем mod_rewrite
RewriteCond $1 ^(.*?)/(.*)$
RewriteCond %{DOCUMENT_ROOT}/johnsmith/apps/%1/content/%2 -f
RewriteRule (.*) apps/%1/content/%2 [QSA,last]
, которое будет правильно перенаправлять запрос на
http://host/johnsmith/blog/css/style.css
на
/docroot/johnsmith/apps/blog/content/css/style.css
но мне нужно жестко запрограммировать johnsmith в файл .htaccess под johnsmith.Можно ли использовать относительный путь, и если нет, есть ли переменные, доступные мне, чтобы я знал текущий каталог .htaccess?
Оригинальный вопрос ниже
Допустим, у меня есть веб-приложение Apache с docroot / docroot. У меня есть файл css, расположенный здесь:
/docroot/johnsmith/apps/blog/content/css/style.css
Я хочу получить этот файл с запросом
http://host/johnsmith/blog/css/style.css
Файл .htaccess должен находиться в папке johnsmith.Следующий набор правил приводит к бесконечному циклу перенаправления
RewriteCond ^(.*?)/(.*)$ apps/$1/content/$2 -f
RewriteRule ^(.*?)/(.*)$ apps/$1/content/$2 [QSA,last]
Если я немного изменил его, избавившись от условия, я могу перейти на страницу, которая представляет собой простой сценарий PHP, чтобы распечатать строку запроса, котораяпоказывает
RewriteRule ^(.*?)/(.*)$ showquerystring.php?path=apps/$1/content/$2 [QSA,last]
путь равен apps / blog / content / css / style.css, это именно то, что я ожидаю.
Может кто-нибудь сказать мне, что яотсутствует?
Кроме того, папка johnsmith может быть названа как угодно, и файл .htaccess внутри johnsmith не должен содержать жесткий код johnsmith.
Более кратко, я хочу спросить::
Есть ли переменная, доступная для mod_rewrite, которая будет равна /blog/css/style.css