Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 12.09.2017, 18:10   #1
ilyakislitsyn85
 
Регистрация: 02.07.2013
Адрес: NOVOсибирск
Сообщений: 8
Репутация: 19
По умолчанию ЧПУ

Подскажите, может кто знает?
Как сделано в известных соц.сетях, когда вводишь адрес:

vn.com/vasya

на самом деле отрабатывает

vn.com/profile.php?id=vasya

А если вручную ввести второй адрес, то отобразится все равно первый!

Как они это делают?
ilyakislitsyn85 вне форума   Ответить с цитированием
Старый 12.09.2017, 18:12   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 10,165
Репутация: 1601

icq: 216409213
По умолчанию

Например, погуглите mod_rewrite
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 12.09.2017, 18:20   #3
ilyakislitsyn85
 
Регистрация: 02.07.2013
Адрес: NOVOсибирск
Сообщений: 8
Репутация: 19
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Например, погуглите mod_rewrite
p51x, пробовал это делать в .htaccess, но не работает, т.к. по сути делает редирект, в итоге получается ошибка 404, т.к папки /vasya реально не существует
ilyakislitsyn85 вне форума   Ответить с цитированием
Старый 12.09.2017, 19:02   #4
Andkorol
Профессионал
 
Регистрация: 31.05.2010
Сообщений: 3,169
Репутация: 986
По умолчанию

Цитата:
Сообщение от ilyakislitsyn85 Посмотреть сообщение
пробовал это делать в .htaccess, но не работает, т.к. по сути делает редирект, в итоге получается ошибка 404, т.к папки /vasya реально не существует
Категорически мало общего между редиректом и ошибкой 404.
Редирект – это осознанное, управляемое перенаправление запроса на другой обработчик.
404 – это ошибка, код ответа сервера о том, что запрашиваемые данные не найдены, хоть с редиректом, хоть без него.
Предположение о том, что использование mod_rewrite вызывает 404 – полностью ошибочно.
Вы его просто готовить не умеете ©
Что, кстати, странно – ибо в сети просто море рецептов по этому поводу.
Andkorol на форуме   Ответить с цитированием
Старый 13.09.2017, 10:59   #5
scalpel
Форумчанин
 
Аватар для scalpel
 
Регистрация: 01.02.2010
Адрес: Бельцы, Молдова
Сообщений: 106
Репутация: 97

icq: 5226046
По умолчанию

Пробуй вот это
scalpel вне форума   Ответить с цитированием
Старый 13.09.2017, 13:39   #6
ilyakislitsyn85
 
Регистрация: 02.07.2013
Адрес: NOVOсибирск
Сообщений: 8
Репутация: 19
По умолчанию

Да, htaccess и RewriteRule уже почти казались решением этой задачи, но есть условия, которые htaccess в принципе побороть не может. Придется все же писать свой компонент под джумла ради такого роутинга.
ilyakislitsyn85 вне форума   Ответить с цитированием
Старый 13.09.2017, 21:37   #7
pompiduskus
юзер как все
Профессионал
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Адрес: земля
Сообщений: 1,558
Репутация: 581

icq: 446.452.423
По умолчанию

Цитата:
Сообщение от ilyakislitsyn85 Посмотреть сообщение
Да, htaccess и RewriteRule уже почти казались решением этой задачи, но есть условия, которые htaccess в принципе побороть не может. Придется все же писать свой компонент под джумла ради такого роутинга.
что именно он не может побороть ?
__________________
<Дзен - Вся вселенная в тебе > | <Рай - это всего лишь мечта терпящего страдания ада> | github.com/ch3ll0v3k
pompiduskus вне форума   Ответить с цитированием
Старый 14.09.2017, 09:14   #8
ilyakislitsyn85
 
Регистрация: 02.07.2013
Адрес: NOVOсибирск
Сообщений: 8
Репутация: 19
По умолчанию

Задача решена. Спасибо всем откликнувшимся.
Очень помогла статья http://gency.ru/single-entry-point

Решил таким способом:
Вклинился в корневой файл index.php, вставил вызов функции (при true сразу выхожу из index.php):

Код:

function checkUserAccount()
{
    $p=strtolower(preg_replace('#//+#','/',$_SERVER['REQUEST_URI']));
    if (strlen($_SERVER['QUERY_STRING'])) $p=substr($p,0,-(strlen($_SERVER['QUERY_STRING'])+1));
    if (count($pa=explode('/',$px=trim($p,'/'),2))<2) $pa[]='';
    if ((count($pa) >= 1) and ($pa[0] является аккаунтом))
    {
        $_GET['id'] = $pa[0];
        include './profile/index.php';
        return true;
    }
    return false;
}

ilyakislitsyn85 вне форума   Ответить с цитированием
Старый 10.10.2017, 02:14   #9
klaus_nuk
Пользователь
 
Регистрация: 10.10.2017
Сообщений: 25
Репутация: 10
По умолчанию

Неплозое решение, но помоему лучше все-таки использовать .htaccess - разница в скорости обработки будет существенная на высоконагруженных проектах. К примеру тот же ВК, спецом обрезали половина ПХП и назвали его KPHP.
klaus_nuk вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЧПУ Юрий-64 Помощь студентам 3 26.05.2016 01:30
Вопрос по ЧПУ igor17 PHP 3 05.03.2015 20:20
ЧПУ в .htaccess Небесный PHP 7 06.12.2013 16:49
ЧПУ и get параметры SoftKoc PHP 9 22.07.2013 03:42
ЧПУ kuba1981 PHP 11 02.10.2012 16:23




04:30.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru