2013-07-23 5 views
2

Как установить RewriteBase в моем файле .htaccess в первую часть REQUEST_URI (domain.com/path или domain.com/path/to/file будет задан параметр RewriteBase в/дорожка)?htaccess Установить RewriteBase в начало запроса URI

+0

Да, я хочу, чтобы он был установлен в первую папку. У меня проблемы с мыслью о том, как лучше это сказать. Если у вас есть какие-либо вопросы, которые могли бы помочь лучше определить его, я был бы рад ответить – Cameron

ответ

2

Вы не можете динамически установить RewriteBase, но вы можете, вручную, извлечь первый путь из %{REQUEST_URI} и вручную добавить, что абсолютных целевых URL-пути. Пример:

RewriteBase/
RewriteCond %{REQUEST_URI} ^/([^/]+) 
RewriteRule ^foo$ /%1/bar.html [L] 

Здесь, если это правило было в файле Htaccess в URL-путь /a/b/c, и вы запрашиваете /a/b/c/foo, правило будет переписать, что, как /a/bar.html.

В качестве альтернативы, если у вас есть много правил и вы абсолютно необходимы для % обратных ссылок, вы можете установить его в качестве переменного окружения в самом начале файла Htaccess:

RewriteBase/
RewriteCond %{ENV:first_uri_path} ^$ 
RewriteCond %{REQUEST_URI} ^/([^/]+) 
RewriteRule^- [E=first_uri_path:%1] 

# then your rules: 
RewriteCond %{HTTP_HOST} www\.(.*) 
RewriteRule ^foo$ /%{ENV:first_uri_path}/bar.php?domain=%1 [L] 

Не уверен, насколько это возможно из это решение для вас, в зависимости от того, что вы на самом деле планируете делать с «динамическими RewriteBases».

+0

Не совсем то, что я надеялся услышать, но из моих исследований, похоже, нет лучшего способа. Спасибо за ответ! – Cameron

Смежные вопросы