Вопрос по настройке .htaccess @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 9 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
MAX-IS Муж.
соучастник
0
Сообщения: 543
Зарегистрирован: 12.03.01
Откуда: Moscow
Заголовок сообщения: Вопрос по настройке .htaccess
Сообщение Добавлено: 23 Декабрь 2004, 22:43:35 
Вопрос по настройке .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] после анализа адреса и его раскладки, так нужно что бы функция отрезала, если он есть, слэш на конце.

Полный программистский профан. Спасибо.

_________________
Avdeev Max -- i@creating.ru -- creating.ru
Akela
Констататор
12
Сообщения: 3239
Зарегистрирован: 03.05.02
Откуда: Европа
Сообщение Добавлено: 23 Декабрь 2004, 23:11:14 
гугл
MAX-IS Муж.
соучастник
0
Сообщения: 543
Зарегистрирован: 12.03.01
Откуда: Moscow
Сообщение Добавлено: 24 Декабрь 2004, 00:23:05 
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();



нужно сделать так, чтобы она перепахивала адреса, если вдруг на конце будет слэш, как это сделать?

так я понимаю, нужно сделать иф на конце слэш удрать последний символ, елзе всё как раньше, просто я не силён в программинге, как это описать не знаю

_________________
Avdeev Max -- i@creating.ru -- creating.ru
Akela
Констататор
12
Сообщения: 3239
Зарегистрирован: 03.05.02
Откуда: Европа
Сообщение Добавлено: 24 Декабрь 2004, 09:01:19 
Я правильно понял, что вся задача заключается в том, что есть некий вывод адресов, и в том случае, если на конце слэш, то его нужно убрать? В тупую - так:
Код:
if (substr($myurl, -1) == '/') {
$myurl = substr_replace($myurl, '', -1);
}

Только зачем убирать последний слэш, объясните плз?
MAX-IS Муж.
соучастник
0
Сообщения: 543
Зарегистрирован: 12.03.01
Откуда: Moscow
Сообщение Добавлено: 24 Декабрь 2004, 15:11:58 
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();


Большое спасибо, думаю, что это должно будет работать.

_________________
Avdeev Max -- i@creating.ru -- creating.ru
MAX-IS Муж.
соучастник
0
Сообщения: 543
Зарегистрирован: 12.03.01
Откуда: Moscow
Сообщение Добавлено: 25 Декабрь 2004, 11:23:39 
Перепробовал, помучился, но вот эта

Код:
$myurl = substr_replace($myurl, '', -1);


операция действительно удаляет последний символ, то есть пишем /issue/lalalaf получаем /issue/lalala, но она не удаляет / на конце, его не может, видимо должна быть ещё какая нибудь операция выделения подстроки из строки.

_________________
Avdeev Max -- i@creating.ru -- creating.ru
Akela
Констататор
12
Сообщения: 3239
Зарегистрирован: 03.05.02
Откуда: Европа
Сообщение Добавлено: 25 Декабрь 2004, 11:36:09 
MAX-IS, она удаляет всё!

Ей пофих кого удалять. ЕСЛИ он там есть! На всякий случай стоит застраховаться от пробела в конце строки. Если у Вас что-то не так - RTFM. Смотрите что именно в строке, ИЗ КОТОРОЙ что-то должно удаляться.
Код:
$myurl = chop($myurl);
if (substr($myurl, -1) == '/') {
$myurl = substr_replace($myurl, '', -1);
}
Akela
Констататор
12
Сообщения: 3239
Зарегистрирован: 03.05.02
Откуда: Европа
Сообщение Добавлено: 25 Декабрь 2004, 11:48:45 
В этом огромном коде разбираться ну никакого кайфа.
Вообще похоже Вам вовсе не это нужно.
Почитайте о функциях basename()
http://ru.php.net/manual/ru/function.basename.php

А о строковых функциях RTFM:
http://ru.php.net/manual/ru/ref.strings.php
Raziel[SD]
новый человек
0
Сообщения: 137
Зарегистрирован: 26.07.02
Откуда: Москва
Сообщение Добавлено: 25 Декабрь 2004, 16:07:01 
вот перевод описания и вот гайд на русском.

_________________
Чем бы дитя ни тешилось … лишь бы не заболело перед финальным релизом.
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 9 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100