Intereting Posts
Dns добавить www префикс? Получение ответа API через curl_exec curl () вместо обычного файла обратного вызова CodeIgniter: класс / библиотека, чтобы помочь получить метатеги с веб-страницы? удаление последних 3 символов в файле (расширение файла) Как узнать, сколько строк и столбцов следует читать из файла Excel с помощью PHPExcel? url кодирует поведение по-разному в Firefox и Internet Explorer PHP находит несколько фигурных скобок в строке и заменяет текст внутри Предупреждение: mysql_error (): предоставленный аргумент не является допустимым ресурсом MySQL-Link dompdf изображение не настоящее изображение не читаемое или пустое Скрытие или удаление имени контроллера в URL-адресе с использованием маршрутов для seo-цели = codeigniter Создание изображения коллажа фото, прикрепленного с помощью PHP от нескольких изображений Проблема с загрузкой: медленная и / или неудачная Почему session_start вызывает таймаут, когда один скрипт вызывает другой скрипт с использованием curl Как сделать xml-файл из php и mysql Вызов неопределенной функции password_hash ()

как я могу определить переменную в файле .htaccess и использовать ее?

Я определил файл htaccess для моего сайта, имеющего этот код:

RewriteEngine on RewriteBase / RewriteRule ^bit_auth\/?(.*)$ /cig/base3/auth/$1 [R=301,NC,L] RewriteCond $1 !^(index\.php|images|robots\.txt|assets|themes|includes) RewriteRule ^(.*)$ /cig/base3/index.php/$1 [L] 

Я хочу сохранить корневой путь моего сайта в переменной следующим образом:

 RewriteEngine on RewriteBase / SetEnv BASE_PATH "/cig/base3" RewriteRule ^bit_auth\/?(.*)$ %{ENV:BASE_PATH}/auth/$1 [R=301,NC,L] RewriteCond $1 !^(index\.php|images|robots\.txt|assets|themes|includes) RewriteRule ^(.*)$ %{ENV:BASE_PATH}/index.php/$1 [L] 

потому что мне, возможно, придется использовать значение BASE_PATH в более кодах позже, а также его можно изменить, и я не хочу каждый раз искать и заменять свой файл htaccess. Но когда я использую код выше, в файле htaccess %{ENV:BASE_PATH} возвращает пустое значение, а не ожидаемое /cig/base3 но в php, когда я его вызываю, используя:

 <?php $specialPath = getenv('BASE_PATH'); var_dump($specialPath)?> 

он показывает правильное значение /cig/base3 .

В чем проблема в моих кодах и как я могу это решить?

Вы не можете использовать SetEnv таким образом, потому что он еще не обработан.

Переменные внутренней среды, заданные этой директивой, устанавливаются после запуска большинства ранних директив обработки запросов, таких как управление доступом и сопоставление URI-к-имени файла. Если переменная среды, которую вы устанавливаете, подразумевается как вход в эту раннюю фазу обработки, такую ​​как директива RewriteRule, вместо этого вы должны установить переменную окружения с помощью SetEnvIf.

То, что вы ищете, это setenvif вместо SetEnv

Поэтому вы должны быть способны сделать что-то вроде

 SetEnvIf Request_URI "^.*" base_path=/cig/base3 

http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html#setenvif