ЧПУ не выходит сделать.

Статус
В этой теме нельзя размещать новые ответы.

асс

Мой дом здесь!
Регистрация
13 Окт 2006
Сообщения
762
Реакции
230
Здравствуйте форумчане. Столкнулся с тем что надо сдлеать чпу.

И так имеем на сейчас принцип работы такой
ссылка на новость вида
index.php?id=22


а мне надо чтоб было так

index.php?cpu=universal
или index.php?cpu=universal.html

пробую набрать урл с полем cpu
тоетсь так index.php?cpu=universal

но реакции нет.

я так понимаю что нужно if($_GET['id']=='') {
заменить на if($_GET['icpu']=='') {

но я пробовал что то не вышло.

Как сделать правильно чтоб выбрать нужную новость
не по ID а по CPU

Добавлено через 8 минут
Разобрался. Оказываеться что там
строка проверки стоит if(!is_numeric($id))
 
я так понимаю что нужно if($_GET['id']=='') {
заменить на if($_GET['icpu']=='') {
Не на icup, а на cup естесно. И код после if выполняется если id/cup пустой. Выбор новости где-то в другом месте.
 
Не на icup, а на cup естесно. И код после if выполняется если id/cup пустой. Выбор новости где-то в другом месте.

да cup, я там ошибся просто.

А как реализовать чтоб работало и id и cpu


например если cpu пустая тоесть там нет Чпу слова
то ставим ид.
Щас помудрю, позже отпишу результат
 
Мб я не правльно понимаю понятие "ЧПУ"
ЧПУ-человека понятнятный урл
тоесть вида
_http://sitename.com/stanica.html вместо
_http://sitename.com/index.php?id=45
или я не так понимаю или вопрос так задан
 
Мб я не правльно понимаю понятие "ЧПУ"
ЧПУ-человека понятнятный урл
тоесть вида
_http://sitename.com/stanica.html вместо
_http://sitename.com/index.php?id=45
или я не так понимаю или вопрос так задан
stanica.htm - тоже малопонятный УРЛ.

Вот пример ЧПУ:


(нет транслитерации и непонятного .html)

Реализцется такая идея через .htaccess и поддержку парсинга строки ядром.

Вот, как например, делаю я:

.htaccess
Код:
# включаем mod_rewrite
Options +FollowSymLinks
RewriteEngine on

# если адрес набран без www, насильно редиректим
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=permanent,L]

# устанавливаем корень
RewriteBase /

# главный индексный файл
DirectoryIndex core.php

# это и есть перенаправление обработки адресной строки в ядро
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.+)$ /core.php?$1 [L]

А теперь часть кода core.php, ответственная за парсинг адресной строки:
PHP:
// ...
// На входе должен быть адрес вида:
// http://host/dir/subdir/../subdirX/?param1=1&param2=2&...&paramX=x
// $url_array[]
// $url_array[0] = "dir";
// $url_array[1] = "subdir";
// ..
// $url_array[X] = "subdirX";
// $_GET["param1"] = "1";
// $_GET["param2"] = "2";
// ..
// $_GET["paramX"] = "X";
$url = "http://localhost".$_SERVER['REQUEST_URI'];
$temp_url = parse_url($url);
$dirs = explode('/', $temp_url['path']);
isset($temp_url['query']) && parse_str($temp_url['query'], $_GET);
// основная страница
$page=$dirs[count($dirs)-2];
// если страница не указана (т.е. индексная), то указываем из конфиги
if ($page=="")
  $page=$config['core_default_module'];

// пример обработчика страницы /user/
if ($dirs[1]=="user") {
  $page="user";
  $name=$dirs[2];
}

// далее переменная $page уже содержит название модуля, который нужно подгружать, и в дело вступает обработчик и подгрузчик модулей, но это уже совсем другая история....

Как видно из приведённого примера, сохраняются переменные в $_GET, а также URL парсится из вполне человеко-подобного вида.
 
Привел урлы к виду
Для просмотра ссылки Войди или Зарегистрируйсяindex.php?cpu=mobilnaya_otdacha&cat=0

вот теперь нужно убрать то что выдлено жирным
чтоб вышло так
smart/demo/mobilnaya_otdacha.html

Как это реализовать через htacces

там же еще есть категория cat=0

Добавлено через 2 минуты
stanica.htm - тоже малопонятный УРЛ.

Вот пример ЧПУ:
*** скрытое содержание ***

(нет транслитерации и непонятного .html)

Реализцется такая идея через .htaccess и поддержку парсинга строки ядром.

Вот, как например, делаю я:


Тоесть у вас по мимо htacces еще и в php обрабатываеться?

К стати я видел реализацию Чпу в Даннео Там 2 массива входной и выходной
 
Код:
RewriteRule ^mobilnaya_otdacha.html$ index.php?cpu=mobilnaya_otdacha&cat=0 [L,QSA]
 
Код:
RewriteRule ^mobilnaya_otdacha.html$ index.php?cpu=mobilnaya_otdacha&cat=0 [L,QSA]

А как быть если там динамические данные?

Должно быть типа так

HTML:
RewriteRule ^[a-zA-z0-9_].html$ index.php?cpu=$1&cat=0 [L,QSA]
 
Должно быть типа так

HTML:
RewriteRule ^[a-zA-z0-9_].html$ index.php?cpu=$1&cat=0 [L,QSA]
Немного не точно (так как могут быть другие еще символы)еси нужны категории
Код:
RewriteRule ^(.*)/(.*).html+$ index.php?cpu=$2&cat=$1 [L]

Если не нужны те категории
Код:
RewriteRule ^(.*).html+$ index.php?cpu=$2&cat=0 [L]
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху