Перепишите папку .htaccess и установите параметры среды - PullRequest
0 голосов
/ 08 февраля 2011

Я хотел бы сделать трюк, подобный следующему:

У меня есть эти папки

folder_dev
folder_live

и эта база кода:

folder

Все папки включенытот же уровень.

Я бы хотел

  1. перенаправить folder_dev на folder и установить для параметра среды THEME значение 'dev'
  2. redirect folder_live к тому же folder, но установите параметр окружающей среды ТЕМА в «живое»

1 Ответ

2 голосов
/ 08 февраля 2011

Если вы хотите иметь физические каталоги, вам понадобится файл .htaccess в каждом, настроенный следующим образом:

В /folder/.htaccess:

SetEnvIf REDIRECT_THEME (.*) THEME=$1

В /folder_dev/.htaccess:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*?)(?:folder_dev)
RewriteRule .* %1folder/$0 [E=THEME:dev]

В /folder_live/.htaccess:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*?)(?:folder_live)
RewriteRule .* %1folder/$0 [E=THEME:live]

Вам нужна директива SetEnvIf в папке кодовой базы, потому что переменные среды, установленные mod_rewrite, всегда имеют префикс REDIRECT_, что требует окончательного перевода из REDIRECT_THEME в THEME.

Вы также можете объединить их в один файл .htaccess в каталоге выше (в данном случае четвертый уровень), что позволит вам избавиться от каталогов folder_dev и folder_live, если они вам не нужны по другой причине:

SetEnvIf REDIRECT_THEME (.*) THEME=$1

RewriteEngine On
RewriteRule ^folder_dev/(.*)$ folder/$1 [E=THEME:dev]
RewriteRule ^folder_live/(.*)$ folder/$1 [E=THEME:live]

# Alternatively just:
# RewriteRule ^folder_([^/]+)/(.*)$ folder/$2 [E=THEME:$2]
...