Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] ЧПУ (http://forum.oszone.net/showthread.php?t=131531)

Artem-Samsung 10-02-2009 13:00 1034390

ЧПУ
 
Темки такой не нашел, решил создать (кроме прикрепленной).
Но мне похоже mod_rewrite не подходит

Есть такие ссылки:

index.php?production=mixer&id=12
index.php?production=mixer&id=3
index.php?production=mixer&id=20

index.php?production=vinil&id=30
index.php?production=vinil&id=14


Нужно переделать в что то типа www.сайт.com/mixer/Behringer-DDM-4000.htm

К примеру
index.php?production=mixer&id=12

Это продукция, котороя имеет свое название в поле `title` - `Behringer DDM 4000`
В таблице `de_mixer`


Для первого шага, я нашел в Инете подсказку - несуществующие ссылки через .htaccess перенаправлять на какой то скрипт. Я написал так:

ErrorDocument 404 /index.php?djone=ufu
ErrorDocument 401 /index.php?djone=ufu

Но толку нету. Все равно ссылки куда то убегают http://djone.com.ua/asadasd
Как то на хостинге прошит свой метод перенаправления ненайденых страниц, как это обойти?
И вообще по сути сложившихся у меня задач по ЧПУ можете сказать?

Буду благодарен.

Sham 10-02-2009 19:18 1034746

ЧПУ - числовое программное управление? Такие станки есть...

Смотря какие параметры скрипту нужны (по каким искать будет). Если ищется по id, то в урле по-любому где-нибудь это число должно быть (произвольно), чтобы его вытащить... а текст можно впоследствии сравнивать с базой, и выдавать 404 или 200... сначала сформируйте сам урл, а потом уже правило mod_rewrite...

Artem-Samsung 11-02-2009 01:12 1035018

Скрипт, который выводит на экран информацию в обычном случае?
Если да, то ...

index.php?production=mixer&id=12

В index.php определяет на наличие mixer
else if (isset($_GET['mixer'])){include('modules/good_mixer.php');}


id - идентификационный номер товара

Получается приблизительно так

$sql=mysql_query("SELECT `content` FROM `de_dj_mixer` WHERE id='$_GET[id]'");


Или какую мне информацию предоставить для ясности?

Sham 11-02-2009 01:48 1035042

Цитата:

Цитата Sham
сформируйте сам урл »

и как он будет выглядеть, с учетом id (без него сложно будет)..
если типа сайт.com/mixer/12/Behringer-DDM-4000.htm
тогда правило будет типа
Код:

RewriteRule ^/([a-z0-9A-Z]+)/([0-9]+)/.+\.htm$ /index.php?production=$1&id=$2 [L]

Artem-Samsung 13-02-2009 00:41 1036944

Так работает http://djone.com.ua/index.php?production=mixer&id=12
Так не работает http://djone.com.ua/mixer/12/Behringer-DDM-4000.htm

Код:

DirectoryIndex index.php
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteRule ^/([a-z0-9A-Z]+)/([0-9]+)/.+\.htm$ /index.php?production=$1&id=$2 [L]

Будьте любезны, подскажите

Sham 13-02-2009 01:40 1036977

Artem-Samsung, зачем RewriteBase? Кроме того если это в корневом htaccess, то передний слеш не нужен...
Код:

DirectoryIndex index.php
Options +FollowSymlinks
RewriteEngine On

RewriteRule ^([a-z0-9A-Z]+)/([0-9]+)/[a-z0-9A-Z\-\_]+\.htm$ index.php?production=$1&id=$2 [L]


Artem-Samsung 13-02-2009 10:54 1037185

К сожаление ошибка 404 :(
Хостинг один из лучших, мод этот стоять полюбому должен. Сейчас у них еще узнаю.

http://djone.com.ua/mixer/12/Behringer-DDM-4000.htm

никак не

http://djone.com.ua/index.php?production=mixer&id=12

Sham 13-02-2009 20:58 1037750

проще самому проверить что просит, и работает ли правило..
сделайте скрипт test.php
PHP код:

<?php
echo 'Реврайт просит файл ' . @$_GET['wtf'];
echo 
' (Если это файл как и в адресной строке, то правило не работает)';
?>

и правило на время (потом его убрать нужно)
поместить его после всех правил в списке

Код:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . test.php?wtf=%{REQUEST_FILENAME} [L]

и наберите снова псевдо-урл... если не выведет test.php то правила запрещены...

Artem-Samsung 14-02-2009 21:47 1038550

http://djone.com.ua/mixer/12/Behringer-DDM-4000.htm

Код:

Реврайт просит файл ...djone.com.ua/mixer
(Если это файл как и в адресной строке, то правило не работает)


Похоже не сильно то работает (

Sham 14-02-2009 23:21 1038623

сори, ошибочка закралась в символьном классе [a-z0-9A-Z\-\_] - символ _ не должен быть последним в наборе...

Код:

RewriteRule ^([a-zA-Z0-9]+)\/([0-9]+)\/[a-zA-Z0-9\_\-]+\.htm$ index.php?production=$1&id=$2 [L]
и определитесь с символами в имени файла (если что другие добавьте с экраном) - иначе тоже 404 будет, если не a-zA-Z0-9_-...

и все ваши данные удалите из постов (пути, ссылки...) - могут вызвать нездоровый интерес...

Artem-Samsung 14-02-2009 23:49 1038646

Ухты =))) Спасибо. Прогресс есть :)

Вот только
Со стилями неочень.
http://djone.com.ua/mixer/12/Behringer-DDM-4000.htm

Пути к картинкам прописываются на подобии:
http://djone.com.ua/mixer/12/banner.gif

Хотя должно быть
http://djone.com.ua/banner.gif

Не подскажите?

Sham 14-02-2009 23:50 1038647

у вас на страничке пути относительные, нужны абсолютные, с передним слешем /js/file.js либо псевдо-урл без слешей нужен...

Sham 15-02-2009 00:08 1038662

если урл нпр будет http://djone.com.ua/mixer~12~Behringer-DDM-4000.htm
то правило
Код:

RewriteRule ^([a-zA-Z0-9]+)\~([0-9]+)\~[a-zA-Z0-9\_\-]+\.htm$ index.php?production=$1&id=$2 [L]
и проблем с относительными ссылками не возникнет...

Artem-Samsung 23-02-2009 16:16 1046505

Sham,

Нужно грамотно составить правило для

index.php?production=mixer
index.php?production=bag
index.php?production=cddvd
index.php?production=monitor

Самому не получается :(
Пробел в регулярных выражениях, будет время - разберусь.

Если Вас не затруднит? Могли бы подсказать, как лучше оформить?

Sham 24-02-2009 01:23 1046945

Artem-Samsung, тот же урл, но без id?

Artem-Samsung 24-02-2009 02:50 1046980

понятно, а вот в этом участке ^([a-zA-Z0-9]+)\~([0-9]+)\~[a-zA-Z0-9\_\-]+\.htm$ что то править?

Sham 24-02-2009 03:32 1046988

чего понятно, это вопрос был (это тот же урл но без ид?)... и псевдо-урл какой будет..

Artem-Samsung 24-02-2009 04:03 1046996

Цитата:

Цитата Sham
вопрос был (это тот же урл но без ид?) »

Прошу прощения.

Да, без айди, но это уже другой тип страниц будет.

index.php?production=monitor - это главная страница типа продукции
Можно так? poduction/monitor.htm
index.php?production=monitor&id=20 - это полное содержания еденицы товара

Еще будет место таким ссылкам, как
index.php?monitor=Adam - где список товаров только с маркой Adam
Предположительно: /monitor/adam.htm
но это сам по аналогии index.php?production=monitor думал сделать. проблемм не будет?

P.S. горизонтальное меню : ?djone=5
Новости: index.php?news=38

Меня волнует пока вот это index.php?production=monitor, другие постараюсь по аналогии сделать

Sham 24-02-2009 04:53 1047000

Цитата:

Цитата Artem-Samsung
Можно так? poduction/monitor.htm »

Код:

RewriteRule ^production\/([a-zA-Z0-9\_\-]+)\.htm$ index.php?production=$1 [L]
Цитата:

Цитата Artem-Samsung
Еще будет место таким ссылкам, как
index.php?monitor=Adam - где список товаров только с маркой Adam
Предположительно: /monitor/adam.htm
но это сам по аналогии index.php?production=monitor думал сделать. »

Код:

RewriteRule ^([a-zA-Z0-9]+)\/([a-zA-Z0-9\_\-]+)\.htm$ index.php?$1=$2 [L]
и в том же духе


Время: 09:50.

Время: 09:50.
© OSzone.net 2001-