|
Страница 1 из 1 [ Сообщений: 9 ] |
Автор |
Сообщение |
MAX-IS
соучастник
|
|
Вопрос по настройке .htaccess
Есть такое
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)/$ index/%{QUERY_STRING}
оно как я понимаю преобразовывает адреса типа /lalala в /index/lalala/
нужно следующее, что бы любые адреса типа /lala или /lala/lala преобразовывались в /index/lala или index/lala/lalal, желательно, что бы если /lala существует, то его не преобразовывать, но это уж не так обязательно, вместо лала любое словосочетание, нужно именно, что бы слэша на конеце не было!
Ещё вопрос: есть некая data[1] после анализа адреса и его раскладки, так нужно что бы функция отрезала, если он есть, слэш на конце.
Полный программистский профан. Спасибо.
|
|
 |
|
 |
Akela
Констататор
|
|
|
 |
|
 |
MAX-IS
соучастник
|
|
Akela, нашёл много про сам модреврайт, а вот конкретное решение не приходит, ну помогите, нужно что бы на конце не было слэша.
Либо, что равносильно, есть вот такая
Код: include('./fancyurls.config.php'); include('./config.php');
$data = explode('/',serverVar('PATH_INFO')); if (count($data) >= 3 && preg_match("/^\d{4}$/", $data[2])) { $blogid = intval($data[1]); $year = intval($data[2]); $month = intval($data[3]); $day = intval($data[4]); if (isset($data[5])) { $title = $data[5]; // 1. get timestamp and blogid for item $query = 'SELECT iblog, inumber FROM '.sql_table('item').' WHERE iurltitle=\'' . $title . '\' '; $query .= "AND (YEAR(itime) = $year AND MONTH(itime) = $month AND DAYOFMONTH(itime) = $day)"; $res = sql_query($query); $obj = mysql_fetch_object($res); $itemid = $obj->inumber; } else { $archive = implode('-', array($year, $month, $day)); } } else { $blogid = intval($data[1]); $archive = $data[2]; }
selector();
нужно сделать так, чтобы она перепахивала адреса, если вдруг на конце будет слэш, как это сделать?
так я понимаю, нужно сделать иф на конце слэш удрать последний символ, елзе всё как раньше, просто я не силён в программинге, как это описать не знаю
|
|
 |
|
 |
Akela
Констататор
|
|
Я правильно понял, что вся задача заключается в том, что есть некий вывод адресов, и в том случае, если на конце слэш, то его нужно убрать? В тупую - так:
Код: if (substr($myurl, -1) == '/') { $myurl = substr_replace($myurl, '', -1); }
Только зачем убирать последний слэш, объясните плз?
|
|
 |
|
 |
MAX-IS
соучастник
|
|
Akela, потому что весь механизм их опознавания движком, как можно увидеть хотя бы из приведённого файла, а это кусок, представляет собой расшифровку по имени записи и запросу к бд на номер записи, категорию, раздел, в данном случае ещё и дату а далее уже стандартный "некрасивый" запрос к самому движку. А так как имя заметки унас допустим lalala то он не опоздает её в дб, если будет lalala/. Как сделать что бы из index.php?itemid=99 можно было юзать /journal/issue/lalala или там /journal/2004/12/24/lalala, разделы как просто /journal/razdel и такие вещи теперь просто хотелось, что бы можно было убрать слово journal из адреса, сам файл journal это скрипт, который как раз и анализирует адрес, пока он почти готовый и выглядит вот так.
Код: include('./fancyurls.config.php'); include('./config.php');
$data = explode("/",serverVar('PATH_INFO'));
if (count($data) == 5) { $year = intval($data[1]); $month = intval($data[2]); $day = intval($data[3]); $title = $data[4];
$query = 'SELECT iblog, inumber FROM '.sql_table('item').' WHERE iurltitle=\'' . $title . '\' '; $query .= "AND (YEAR(itime) = $year AND MONTH(itime) = $month AND DAYOFMONTH(itime) = $day)"; $res = sql_query($query); $obj = mysql_fetch_object($res);
$blogid = $obj->iblog; $itemid = $obj->inumber; } elseif (count($data) == 4) {
$title = $data[3];
$query = 'SELECT iblog, inumber FROM '.sql_table('item').' WHERE iurltitle=\'' . $title . '\' '; $res = sql_query($query); $obj = mysql_fetch_object($res);
$blogid = $obj->iblog; $itemid = $obj->inumber; } elseif (count($data) == 2) { $shortname = $data[1];
$blogid = getBlogIDFromName($shortname); } elseif (count($data) == 1) { $blogid = getBlogIDFromName(journal); } elseif (count($data) == 3) { $check = $data[1]; $name = $data[2]; if ($check = issue) { $title = $name;
$query = 'SELECT iblog, inumber FROM '.sql_table('item').' WHERE iurltitle=\'' . $title . '\' '; $res = sql_query($query); $obj = mysql_fetch_object($res);
$blogid = $obj->iblog; $itemid = $obj->inumber; } elseif ($check = data) { $itemid = intval($data[2]); } else { $catid = getCatIDFromName($name); }
}
selector();
Большое спасибо, думаю, что это должно будет работать.
|
|
 |
|
 |
MAX-IS
соучастник
|
|
Перепробовал, помучился, но вот эта
Код: $myurl = substr_replace($myurl, '', -1);
операция действительно удаляет последний символ, то есть пишем /issue/lalalaf получаем /issue/lalala, но она не удаляет / на конце, его не может, видимо должна быть ещё какая нибудь операция выделения подстроки из строки.
|
|
 |
|
 |
Akela
Констататор
|
|
MAX-IS, она удаляет всё!
Ей пофих кого удалять. ЕСЛИ он там есть! На всякий случай стоит застраховаться от пробела в конце строки. Если у Вас что-то не так - RTFM. Смотрите что именно в строке, ИЗ КОТОРОЙ что-то должно удаляться.
Код: $myurl = chop($myurl); if (substr($myurl, -1) == '/') { $myurl = substr_replace($myurl, '', -1); }
|
|
 |
|
 |
Akela
Констататор
|
|
|
 |
|
 |
Raziel[SD]
новый человек
|
|
_________________ Чем бы дитя ни тешилось … лишь бы не заболело перед финальным релизом.
|
|
 |
|
 |
|
Страница 1 из 1 [ Сообщений: 9 ] |
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
|
|