Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование URL с помощью mod_rewrite, Возможно ли реализовать это? 
:(
    Опции темы
Damon_
Дата 11.2.2010, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



Задача:

Необходимо преобразовать url :


1)  RewriteRule ^([a-zA-Z]+)/([0-9]+)/?$ /profile.php?profile_id=$2                         http://test.host.com/profile/8488/             


в url: 

2) RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/?$ /profile.php?profile_id=8488&name=$2                   http://test.host.com/profile/username/ 

Счас ulr выглядит вот так 1),  а необходимо чтобы выглядел вот так 2) 

с уловием что в 1) передается только profile_id, 
а  в 2) должен передаваться profile_id и name (уникальный ник),
при этом url должен выглядеть без profile_id как в 1) случае.

Возможно ли это реализовать???
  



 

PM MAIL   Вверх
Damon_
Дата 11.2.2010, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



##
##  users.txt -- массив преобразований
##

1    usernick   
2     usernick1   




RewriteMap   real-to-user               txt:/path/to/file/users.txt

RewriteRule     ^([a-zA-Z]+)/([0-9]+)/?$    /profile/${real-to-user:$2}/

Такой вариант имеет место?
PM MAIL   Вверх
awers
Дата 11.2.2010, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 1
Всего: 31



Damon_, я думаю лучше всего это делать средствами пхп.
PM MAIL WWW ICQ Skype   Вверх
Damon_
Дата 11.2.2010, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



А принцип отписать можно?

Добавлено через 1 минуту и 33 секунды
Возможно ли включить директивой rewritemap файлик пхп, который выведет уникальный ник на основе id?
PM MAIL   Вверх
awers
Дата 11.2.2010, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 1
Всего: 31



Цитата(Damon_ @  11.2.2010,  14:35 Найти цитируемый пост)
Возможно ли включить директивой rewritemap файлик пхп, который выведет уникальный ник на основе id? 

Зачем? В чём заключается сложность подставки юзернейма вместо айди и последующее преобразование его в айди?
PM MAIL WWW ICQ Skype   Вверх
Damon_
Дата 11.2.2010, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



Надо чтобы урл выглядел  http://test.host.com/profile/username/ и в нем перевадалось /profile.php?profile_id=8488&name=username 

А зачем это надо потому как код уже написан и он весь держится на profile_id,  а урлы должны выглядеть: http://test.host.com/profile/username/ на данный момент они выглядят http://test.host.com/profile/1/, где 1 - id  в базе данных юзера.




PM MAIL   Вверх
Damon_
Дата 11.2.2010, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



Цитата(Damon_ @ 11.2.2010,  13:29)
##
##  users.txt -- массив преобразований
##

1    usernick   
2     usernick1   




RewriteMap   real-to-user               txt:/path/to/file/users.txt

RewriteRule     ^([a-zA-Z]+)/([0-9]+)/?$    /profile/${real-to-user:$2}/

Такой вариант имеет место?

Такой вариант имеет место?

Или можно ли выбрать username в скрипте файлика php
PM MAIL   Вверх
awers
Дата 11.2.2010, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 1
Всего: 31



Damon_, в самом начале своего скрипта сделай $profile_id = ... db_query: select user_id ... where username = ...
Может и твой вариант имеет место быть, но я считаю такой способ не приемлемым. 
PM MAIL WWW ICQ Skype   Вверх
Damon_
Дата 11.2.2010, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



RewriteMap   real-to-user    team prg:/path/to/file/test.php
RewriteRule     ^([a-zA-Z]+)/([a-zA-Z]+)/?$    /profile.php?profile_id=${real-to-user:$2}  [QSA]


А в файле php выбирается id по значению username.

Тока будет ли такое работать?
PM MAIL   Вверх
awers
Дата 11.2.2010, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 1
Всего: 31



Damon_, попробуй! smile
PM MAIL WWW ICQ Skype   Вверх
Damon_
Дата 11.2.2010, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



RewriteMap   id  prg:/home/path/test/test.php
RewriteRule     ^([a-zA-Z]+)/([a-zA-Z]+)/?$    /profile.php?profile_id=${id:$2} [QSA]


Код

<?php 

$fdin=fopen("php://stdin","r"); 
$fdout=fopen("php://stdout","w"); 
set_file_buffer($fdout,0); 
while($l=fgets($fdin)) { 
    fputs($fdout,key_lookup($l));      
} 
function key_lookup($key) { 
    
    define ('DB_HOST',     'localhost');
    define ('DB_USER',     'user');
    define ('DB_PASSWORD', 'pass');
    define ('DATABASE',    'base');
    mysql_pconnect(DB_HOST, DB_USER, DB_PASSWORD) or die("Could not connect: " . mysql_error());
    mysql_select_db(DATABASE); 
    
    
    $query_rec = "SELECT users_id
                     FROM users 
                     WHERE users_first_name =  '$key' ";
    $rec = mysql_query($query_rec) or die(mysql_error()); 
    $row_rec = mysql_fetch_assoc($rec); 
return $row_rec['users_id'];
    
    
} 



Не хочет работать почему то (

Это сообщение отредактировал(а) Damon_ - 11.2.2010, 16:40
PM MAIL   Вверх
awers
Дата 11.2.2010, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 1
Всего: 31



Damon_, потому что апач открывает home/path/test/test.php как текстовый файл и читает оттуда код вместо результатов его выполнения.
Я считаю что задачу ты поставил перед собой не верно.
PM MAIL WWW ICQ Skype   Вверх
Damon_
Дата 12.2.2010, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



Да я уже понял что это не решение поставленной передо мной задачи.

Но все равно интересно, как заставить апач читать код выполнения, а не сам как текстовый файл?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема »


 




[ Время генерации скрипта: 0.0610 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.