Подскажите пожалуйста. С админки формирую ссылки, а они неправильно работают.
т.е.
формирую с test/admin/
ссылку на exit/
а он формирует test/exit/ вместо test/admin/exit/
Хотя в .htaccess все есть
Спустя 1 час, 21 минута, 50 секунд (18.03.2011 - 20:28) Trianon написал(а):
в адресной строке у Вас что находится?
Спустя 42 минуты, 23 секунды (18.03.2011 - 21:10) kent666 написал(а):
В адресной строке у меня находится переменная route
т.е. я формирую ссылку из админки
ПО идее должно получится
test/admin/route, а получается просто test/route
уже переносил define('IRB_HOST', 'http://'. $_SERVER['HTTP_HOST'] .'/'); с конфига который находится в корневом каталоге в index.php каталога /admin
У меня ссылки формируются по такому принципу
т.е. я формирую ссылку из админки
ПО идее должно получится
test/admin/route, а получается просто test/route
уже переносил define('IRB_HOST', 'http://'. $_SERVER['HTTP_HOST'] .'/'); с конфига который находится в корневом каталоге в index.php каталога /admin
У меня ссылки формируются по такому принципу
?php
/**
* Function of formation of GET-parametres
* Функция формирования GET-параметров
*/
function href()
{
global $GET; // Объявляем массив $GET, сформированный ранее, глобальным
$tmp = $GET; //Переписываем переменную, что бы не влиять на глобальный массив
$href = '';
$arg = func_get_args(); // Получаем массив аргументов переданных в функцию href(тут_вот)
if($arg[0] == 'host') // Это для того, что бы сделать ссылку без параметров
return IRB_HOST;
foreach($arg as $var) // Перебираем полученные аргументы
{
$param = explode('=', $var); // Разделяем имя переменной и значение (page=gallery, например)
// Если в массиве $GET ($tmp) есть ключ, полученный выше (в данном случае 'page')
if(array_key_exists($param[0], $tmp))
$tmp[$param[0]] = $param[1]; // То этому ключу присваиваем полученное значение
else
die('The variable <b>'. $param[0] .'</b> is not defined'); // Иначе...
}
$cnt = array_flip(array_keys($tmp)); // обрезаем те параметры, которые не передавались в аргумент
$tmp = array_slice($tmp, 0, $cnt[$param[0]] + 1);
foreach($tmp as $var => $val) // Теперь поочередно вставляем значения из $GET ($tmp) в ссылку
if(IRB_REWRITE == 'on')
$href .= '/'. $val; // Если реврайт включен, через слэш
elseif(!empty($val))
$href .= '&'. $var .'='. $val; // Если нет = обычные GET параметры
if(IRB_REWRITE == 'on')
return IRB_HOST . trim($href, '/');
else
return IRB_HOST .'?'. trim($href, '&');
}
Спустя 8 минут, 26 секунд (18.03.2011 - 21:19) Trianon написал(а):
В адресной строке браузера у Вас не переменная находится, а URL.
Его, начиная от символов http и до последнего знака, я и попросил процитировать.
А если база отсчета путей изменена тегом HTML - то новое значение этой базы.
Его, начиная от символов http и до последнего знака, я и попросил процитировать.
А если база отсчета путей изменена тегом HTML - то новое значение этой базы.
Спустя 19 минут, 16 секунд (18.03.2011 - 21:38) kent666 написал(а):
ну я условно назвал переменной route
фактически у меня http://www.test/admin/exit такой URL должен получится, а получается http://www.test/exit
Проблема в константе IRB_HOST
я ее багил и она с URL http://www.test/admin/ определяется как http://www.test/
Вопрос почему?
в .htaccess я прописал
фактически у меня http://www.test/admin/exit такой URL должен получится, а получается http://www.test/exit
Проблема в константе IRB_HOST
я ее багил и она с URL http://www.test/admin/ определяется как http://www.test/
Вопрос почему?
в .htaccess я прописал
AddDefaultCharset UTF-8
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
php_flag register_globals Off
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
Options -Indexes
# php_value error_reporting 2047
# php_value error_log "Z:/home/my-site.ua/www/log/error.log"
# php_flag log_errors on
# php_flag display_errors off
RewriteEngine on
RewriteRule ^admin/(.*)$ admin/index.php?route=$1 [L,QSA]
RewriteCond %{REQUEST_URI} !^/admin
RewriteCond %{REQUEST_URI} !^/favicon.ico
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
Спустя 15 часов, 48 минут, 26 секунд (19.03.2011 - 13:26) twin написал(а):
Цитата |
Еще один момент. Так как скрипт может находиться и не в корневой директории, а идти, допустим, как дополнение к уже готовому сайту, нужно определить пути. Мы сделали это константой IRB_HOST , которую нужно определить в конфиге. Если скрипт не в корне, нужно добавить полный путь: |
/**
* Establishes a path to a script root for HTTP
* Устанавливает путь до корневой директории скрипта
* по протоколу HTTP
*/
define('IRB_HOST', 'http://'. $_SERVER['HTTP_HOST'] .'/site/');
/**
* Establishes a physical path to a root directory of a script
* Устанавливает физический путь до корневой директории скрипта
*/
define('IRB_ROOT', str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']) .'/site/');
Спустя 3 минуты, 44 секунды (19.03.2011 - 13:30) twin написал(а):
Либо если нужна админка, то это пропущено:
Цитата |
2. Появилась новая константа - IRB_ADMIN. Она нужна для того, что бы различить обычные ссылки и ссылки на модули админ-панели. Для этого изменим функцию формирования ссылок href(): |
/**
* The administrator-panel identifier
* Идентификатор админ-панели
*/
define('IRB_ADMIN', true);
Спустя 1 день, 20 часов, 39 минут, 55 секунд (21.03.2011 - 10:10) kent666 написал(а):
Да. Я понял. Просто недосмотрел. ))))