Альтернативный Форум

— этот форум работает с 03 октября 2005 года. ️‍🔥️‍🔥
(#1)
Старый 06.12.2006
ЧПУ - человеко понятные урлы.

кто знает как с помощью MOD REWRITE сделать ЧПУ.

Например у меня идет ссылка через php:

http://localhost/top.php?cat=9&sort_top=0&sort=30


через опись mod rewrite это выглядело бы так:

http://localhost/top/cat/9/0/index-30.html

Согласитесь куда лучше смотрится. + очень хорошо цитирется поисковыми машинами.

Вопрос - как сделать
metallphilin metallphilin вне форума
администратор форума
metallphilin Первый уровень
 
Регистрация: 05.10.2005
Сообщений: 1,543 шт.
Карма: 0 бал.
Ответить с цитированием
(#2)
Старый 06.12.2006

xakep.ru там всё подробно описано, к сожалению щас инета нет, так что подробно не могу сказать..но там делаеццо через регулярные выражения...щас гляну мож остался пример...
относительно твоего примера эт будет выглядеть так
Цитата:
RewriteEngine On
RewriteRule ^ ([0-9]+)/ ([0-9]+)/ ([0-9]+).html top.php?cat=$1&sort_top=$2&sort=$3
но учти, если у тя будет например http://localhost/top.php?cat=9&sort=0
то всё сдвинеццо, и ещё этот пример делает цифры, если нужны буквы то будет ([a-zA-Z]+) мона поставить любоей не пробельный символ, эт будет ([\w]+) помоему....естественно строчку нужно писать в .htaccess
P.S и хватит уже грить про цитирование поисковиками..цитируют они одинаково, им без разници по каким ссылкам идти, они грузят страницу, выдерают ссылки и идут по ним..ну сам посуди, вот форум IPB и даже твой, не состоит из ЧПУ а по запросам находиццо на первых местах как собсна и другией форумы и проекты...ЧПУ тут не причём, всё дело в ссылках, например те нужна 20 новость, ссылка выглядит так index.php?news=20, вот поисковик её просканил и потом выдаёт такую ссылку, допустим ты удалил 10 новость, и если движок сделан нормально то 20 новость так и должна остаццо 20-й а не сдвинуццо на 19-ю как и все остальные, т.е поисковик будет выдавать ссылку на совсем другую новость, до того естественно пока он заново твой сайт не просканит, так что хоть у тя тут ЧПУ хоть обычные урлы, толку ноль, всё зависит от системы, вот тут форум сделан пральна...моя Smalta CMS к сожелению нет..хотя поисковики тоже неплоха её сканят...
..........................
smalta.net
Rembo Rembo вне форума
Программист
Rembo Первый уровень
 
Аватар для Rembo
 
Регистрация: 31.05.2006
Сообщений: 443 шт.
Карма: 2 бал.
Ответить с цитированием
(#3)
Старый 06.12.2006

нашел - http://www.xakep.ru//magazine/xa/091/138/1.asp

Цитата:
Q: Подскажи, каким образом можно замаскировать использование скрипта на сервере. Для меня это очень актуально: нужно, чтобы клиенты, как и прежде, обращались к нему, но при этом не догадывались, что имеют дело не с динамической структурой, а со статической страницей.

A: Верный ход в твоем случае — воспользоваться возможностями файла .htaccess и модулем Mod Rewrite. К счастью, последний установлен практически на любом хостинге, даже самом дешевом. Допустим, что скрипту передаются два параметра: первый задает тип авторизации, а второй — числовой идентификатор пользователя. URL-адрес такой страницы будет примерно следующим: www.site.com/login.pl?type=password&id=31337. Чтобы спрятать вызов скрипта достаточно добавить в .htaccess 2 следующие строчки:

RewriteEngine On

RewriteRule ^ ([a-zA-Z]+)/ ([0-9]+).html login.pl?type=$1;id=$2

Готово. Теперь страница легко отзовется по адресу: www.site.com/password/31337.html. Теперь комментарии по коду. Первая строчка включает механизм переписывания URL (подрубает модуль Mod Rewrite). Вторая более сложная: сначала с помощью регулярного выражения она бьет адрес на 2 составляющие (в переменную $1 записывается часть адреса до слеша «/», а в переменную $2 заносится номер, стоящий до .html), после чего преобразует URL в нужный нам вид. Просто внимательно посмотри на нее — и все станет ясно.

Единственная сложность заключается в том, чтобы постоянно отслеживать URL. Если об этом не позаботиться, то настоящий URL обязательно засветится во время перехода, осуществляемого самим скриптом. Сложность, впрочем, легко разрешима — нужно лишь написать простую функцию для преобразования URL и использовать ее для любой навигации по сайту.

Вообще, интересная штука этот Mod Rewrite. Можно молниеносно огородить себя от скрипткидиссов и любителей искать уязвимые сценарии через Google. Едва ли кому-то придет в голову заморачиваться со статическим URL и тем более пытаться завалить сайт с помощью дежурных подстановок — ‘1, ../../../, |id| и т.д. Но даже если кто-то и решится, то ничего у него не выйдет.
ЗЫ: про поисковики я тебе потом напишу.
metallphilin metallphilin вне форума
администратор форума
metallphilin Первый уровень
 
Регистрация: 05.10.2005
Сообщений: 1,543 шт.
Карма: 0 бал.
Ответить с цитированием
(#4)
Старый 06.12.2006

Н Е Р А Б О Т А Е Т


Блин запарил он меня 500-той ошибкой.

Ну вот у меня ссылка блин:

http://localhost/portfolio.php?photo_id=3&start=0

я пишу ему суке:

Код:
RewriteEngine On

RewriteRule ^ ([a-zA-Z]+)/ ([0-9]+).html portfolio.php?photo_id=$1;&start=$2
он мне выдает 500-тую, вежливо (и вероятно про себя) посылает на ...

пищет в лог ошибок - RewriteRule: bad flag delimiters


делиметерсы ему мои не нравюццо... хех чо удумал, мои-то пилять дилимитерсы?!



PS: а чо такое дилимитерсы? :huh:

Последний раз редактировалось metallphilin; 06.12.2006 в 12:37.
metallphilin metallphilin вне форума
администратор форума
metallphilin Первый уровень
 
Регистрация: 05.10.2005
Сообщений: 1,543 шт.
Карма: 0 бал.
Ответить с цитированием
(#5)
Старый 06.12.2006

Цитата:
Сообщение от metallphilin
а чо такое дилимитерсы? :huh:
Вообще, делиметр - это разделитель. А подробнее - вот цитата из Лингво, может поможет:
Цитата:
delimiter
разделитель символ (пробел, табуляция, запятая, скобки, ключевые слова и т.п.) или строка, служащие для разделения между собой каких-либо элементов (данных в файле; записей в базе данных; операторов, имён, выражений или параметров в программе и т.д.). Наиболее часто в качестве разделителей используется запятая или символ табуляции, в таких случаях говорят о comma-delimited file или о tab-delimited file
..........................
Хочешь изменить мир?
Начни с себя!

Нужен качественный перевод с английского?
Заходите, поможем в нашем Бюро переводов
Stranger Stranger вне форума
Happy ferret
Stranger Второй уровеньStranger Второй уровеньStranger Второй уровеньStranger Второй уровеньStranger Второй уровеньStranger Второй уровеньStranger Второй уровеньStranger Второй уровеньStranger Второй уровень
 
Аватар для Stranger
 
Регистрация: 15.04.2006
Сообщений: 2,331 шт.
Карма: 1259 бал.
Ответить с цитированием
(#6)
Старый 06.12.2006

смущает мя символ ^, вообще в регулярных выражениях он показывает претензию к началу строки..я в принципе делал, у мя работало, но мне не понравилось, т.к при заходе в папку у мя глючили картинки, т.к они не привязаны к корню..
попробуй снести пробел после слеша "/"
Кстати неисключено что функция отключена на сервере и On тут не поможет..., на izmuroma работало вроде.
кстати на это смарел?!
Цитата:
500-я ошибка может быть вызвана следующими причинами:
1. неверный синтаксис .htaccess
2. файл .htaccess записан в формате Windows, а должен быть записан в формате UNIX
а то я смарю ты на локальном гоняешь..
..........................
smalta.net

Последний раз редактировалось Rembo; 06.12.2006 в 14:35.
Rembo Rembo вне форума
Программист
Rembo Первый уровень
 
Аватар для Rembo
 
Регистрация: 31.05.2006
Сообщений: 443 шт.
Карма: 2 бал.
Ответить с цитированием
(#7)
Старый 06.12.2006

мля Сань, ну ты отжог, я чёт сначала не заменил епть блин
"http://localhost/portfolio.php?photo_id=3&start=0"
у тя photo_id=3 а 3 это цифра, она не входит в инетрвал от а до z и от А до Z, по этому нада использовать ([0-9]+) и пробел всё же сотри...
..........................
smalta.net
Rembo Rembo вне форума
Программист
Rembo Первый уровень
 
Аватар для Rembo
 
Регистрация: 31.05.2006
Сообщений: 443 шт.
Карма: 2 бал.
Ответить с цитированием
(#8)
Старый 06.12.2006

один хрен не пашет ничо... 500 и хоть убейся вот лог ошибок:

Цитата:
[Wed Dec 06 15:00:33 2006] [alert] [client 127.0.0.1] z:/home/s7.ru/www/.htaccess: RewriteRule: bad flag delimiters
[Wed Dec 06 15:00:33 2006] [alert] [client 127.0.0.1] z:/home/s7.ru/www/.htaccess: RewriteRule: bad flag delimiters
[Wed Dec 06 15:00:33 2006] [alert] [client 127.0.0.1] z:/home/s7.ru/www/.htaccess: RewriteRule: bad flag delimiters
[Wed Dec 06 15:00:33 2006] [alert] [client 127.0.0.1] z:/home/s7.ru/www/.htaccess: RewriteRule: bad flag delimiters
[Wed Dec 06 15:00:33 2006] [alert] [client 127.0.0.1] z:/home/s7.ru/www/.htaccess: RewriteRule: bad flag delimiters
[Wed Dec 06 15:00:33 2006] [alert] [client 127.0.0.1] z:/home/s7.ru/www/.htaccess: RewriteRule: bad flag delimiters
[Wed Dec 06 15:00:34 2006] [alert] [client 127.0.0.1] z:/home/s7.ru/www/.htaccess: RewriteRule: bad flag delimiters
[Wed Dec 06 15:00:34 2006] [alert] [client 127.0.0.1] z:/home/s7.ru/www/.htaccess: RewriteRule: bad flag delimiters
[Wed Dec 06 15:00:34 2006] [alert] [client 127.0.0.1] z:/home/s7.ru/www/.htaccess: RewriteRule: bad flag delimiters

и т.д. соб-но.
metallphilin metallphilin вне форума
администратор форума
metallphilin Первый уровень
 
Регистрация: 05.10.2005
Сообщений: 1,543 шт.
Карма: 0 бал.
Ответить с цитированием
(#9)
Старый 06.12.2006

Я в это глубоко никогда не лез, но вот что например у меня прописывалось при настройке Nuke в .htaccess


Цитата:
#ENCYCLOPEDIA
RewriteRule ^dic([1-9][0-9]*)all([[a-zA-Z0-9]*).* modules.html?name=Encyclopedia&op=terms&eid=$1&ltr =$2
RewriteRule ^term([1-9][0-9]*)-([1-9][0-9]*).* modules.html?name=Encyclopedia&op=content&tid=$1&p age=$2
RewriteRule ^term([1-9][0-9]*).* modules.html?name=Encyclopedia&op=content&tid=$1
RewriteRule ^dic([1-9][0-9]*).* modules.html?name=Encyclopedia&op=list_content&eid =$1
RewriteRule ^encyclopedia.* modules.html?name=Encyclopedia&file=index

#FAQ
RewriteRule ^faq.html modules.html?name=FAQ&file=index
RewriteRule ^faq-([a-zA-Z0-9+]*)-([0-9]*)-([a-zA-Z0-9+]*) modules.html?name=FAQ&myfaq=$1&id_cat=$2&categorie s=$3

#FILES
RewriteRule ^files.html modules.html?name=Files
RewriteRule ^files_add.html modules.html?name=Files&go=add_file
RewriteRule ^files_cat([0-9]*).html modules.html?name=Files&go=showcat&cid=$1
RewriteRule ^files_cat([0-9]*).html modules.html?name=Files&go=cat&cid=$1
RewriteRule ^files_view_file([0-9]*).html modules.html?name=Files&go=view_file&lid=$1
Тут конечно для конкретной системы, но вдруг эти записи подскажут чего
Mike Mike вне форума
Обосновался
Mike Первый уровень
 
Регистрация: 08.06.2006
Сообщений: 257 шт.
Карма: 87 бал.
Ответить с цитированием
(#10)
Старый 06.12.2006

чует мой мозг тут нада риальную доку по всему этому делу... хотя если прошарить как это делать, то можно такова натворить.... например ставить разширение не html а asp или еще какое нить - вот сиди и догадывайся как сайт сделан и как его "хакнуть"
metallphilin metallphilin вне форума
администратор форума
metallphilin Первый уровень
 
Регистрация: 05.10.2005
Сообщений: 1,543 шт.
Карма: 0 бал.
Ответить с цитированием
(#11)
Старый 06.12.2006

metallphilin
да тут и так всё проще не куда...а в принципе хоть щас мож заменить html на asp и будет работать, даже в том примере который ты собираешься сделать, там же дописываеццо .html ну вот ставь .asp и всё, кстати на xakep'е тоже об этом есть..
..........................
smalta.net
Rembo Rembo вне форума
Программист
Rembo Первый уровень
 
Аватар для Rembo
 
Регистрация: 31.05.2006
Сообщений: 443 шт.
Карма: 2 бал.
Ответить с цитированием
(#12)
Старый 06.12.2006
Post

2metallphilin:
Хм... .htaccess в студию, а также передаваемый линк и тот, который нужно получить. Чем смогу, помогу.
jiggo jiggo вне форума
Прохожий
jiggo Первый уровень
 
Регистрация: 09.11.2006
Сообщений: 20 шт.
Карма: 1 бал.
Ответить с цитированием
(#13)
Старый 06.12.2006

да походу у Фила чёт на локальном хосте, затестил то что не работало на izmuroma, всё ок
..........................
smalta.net
Rembo Rembo вне форума
Программист
Rembo Первый уровень
 
Аватар для Rembo
 
Регистрация: 31.05.2006
Сообщений: 443 шт.
Карма: 2 бал.
Ответить с цитированием
(#14)
Старый 06.12.2006

Эврика товарищи =) Подсказал один добрый человек на просторах необъятной паутины. вот как это делаеццо:

Цитата:
RewriteRule ^portfolio([0-9]*)/([0-9]*).html$ /portfolio.php?photo_id=$1&start=$2
и так соот-но для каждого файла, НО гвоздь в том что в самих файлах ссылки должны прописываццо как уже переменные... ибо вывода все равно не будет как ЧПУ, но

http://s7.ru/portfolio/7.html вызываеццо без проблем. если же в аксесе прописать например asp или gtk или xml или vasya, то соот-но вывод идет

http://s7.ru/portfolio/7.vasya

что не может не радовать.. щас буду разбираться как это сделать в самом движке.

Добавлено через 15 минут:

хе... ну и КАК соб-но это сделать в самом движке :huh:

Цитата:
<a href=/portfolio.php?photo_id=$myrow[0]>$thumbnail</a>
$myrow[0] - переменная соб-но номера картинки.
$thumbnail - соб-но сама картинка.

Конечно ничего не мешает сделать так:

Цитата:
<a href=/portfolio/$myrow[0].html>$thumbnail</a>
конечно ссылка идет как нужно, НО сам php скрипт не обрабатывается - ибо с чего бы ему обрабатываться. :rolleyes:

ЗЫ: нашел доку - http://af.net.ru/showthread.php?p=41676#post41676 но там амздец - без стакана не разберешься :eek:

Последний раз редактировалось metallphilin; 07.12.2006 в 01:00.
metallphilin metallphilin вне форума
администратор форума
metallphilin Первый уровень
 
Регистрация: 05.10.2005
Сообщений: 1,543 шт.
Карма: 0 бал.
Ответить с цитированием
(#15)
Старый 07.12.2006

Цитата:
portfolio([0-9]*)
вот это нах обьясни плз, у тя чё ссылки идут типа portfolio1/ или portfolio2/?!
..........................
smalta.net
Rembo Rembo вне форума
Программист
Rembo Первый уровень
 
Аватар для Rembo
 
Регистрация: 31.05.2006
Сообщений: 443 шт.
Карма: 2 бал.
Ответить с цитированием
(#16)
Старый 07.12.2006

Цитата:
Сообщение от Rembo
вот это нах обьясни плз, у тя чё ссылки идут типа portfolio1/ или portfolio2/?!

нет они у меня идут

/portfolio.php?photo_id=1
/portfolio.php?photo_id=2
/portfolio.php?photo_id=3

и т.д.
metallphilin metallphilin вне форума
администратор форума
metallphilin Первый уровень
 
Регистрация: 05.10.2005
Сообщений: 1,543 шт.
Карма: 0 бал.
Ответить с цитированием
(#17)
Старый 07.12.2006

Цитата:
Написал: censored
Вот. А для того чтобы он правильно обрабатывался, и нужен RewriteRule в htaccess

Т.е. смотри сам принцип:
Есть, например, такая ссылка:
http://www.siteurl.ru/index.php?p=12345

Она выводится на страницу.
При клике - она в адресной строке.
Т.е. идет обращение к сайту siteurl, к его index.php и ему уже передается параметр p равный 12345
Когда ты ссылку выводишь на старницу в таком виде:
http://www.siteurl.ru/12345/
То идет обращение к папке 12345 которая лежит в корне. Т.е. скрипту ничего не передастся (правда если у тебя на сайте нету папки 12345 в которой лежит index и из которого идет обращение к скрипту).
И поэтому чтобы ссылка http://www.siteurl.ru/12345/ понималась правильно и индексу передавался параметр со значением, то ты в RewriteRule в htaccess ее переопределяешь.
Т.е. типа так в htaccess и говоришь: "если зайдут по ссылке http://www.siteurl.ru/12345/, то на самом деле имеется в виду что зашли по ссылке http://www.siteurl.ru/index.php?p=12345".

Это я уже понял, но смотри.

Вот у меня идет таже самая ссылка портфолио:

http://localhost/portfolio.php?photo_id=5


Я пишу в аксесе:

RewriteRule ^portfolio/([0-9]*).html$ /portfolio.php?photo_id=$1

Пишу в движке:

<a href=/portfolio/$myrow[0].html>$thumbnail</a>

Ссылки у меня выводятся как:

http://localhost/portfolio/1.html
http://localhost/portfolio/6.html
http://localhost/portfolio/8.html и т.д.

При клике на любую из ссылок он меня редиректит в САМ РАЗДЕЛ http://localhost/portfolio/ без конкретной работы - 1.html 3.html и т.д. соот-но так же и с новотями.

Сам принцип мне понятен, но скрипт то не обрабатывается, php-ный..... т.е. по идеи при клике на http://localhost/portfolio/1.html он должен бы редиректить юзера на http://localhost/portfolio.php?photo_id=1 но он этого не делает

где ошибка?
metallphilin metallphilin вне форума
администратор форума
metallphilin Первый уровень
 
Регистрация: 05.10.2005
Сообщений: 1,543 шт.
Карма: 0 бал.
Ответить с цитированием
(#18)
Старый 08.12.2006

сервер виртуальный сука тупил

Сделал кароче. =) Вот мой аксес:

Цитата:
RewriteEngine On
Options +FollowSymlinks
RewriteRule ^index/?$ /index.php [L]
RewriteRule ^portfolio/?$ /portfolio.php [L]
RewriteRule ^portfolio/work-([A-Za-z0-9-]+)/?$ /portfolio.php?photo_id=$1 [L]
RewriteRule ^portfolio/work-([A-Za-z0-9-]+)/start-([A-Za-z0-9-]+)/?$ /portfolio.php?photo_id=$1&start=$2 [L]
RewriteRule ^portfolio/start-([A-Za-z0-9-]+)/?$ /portfolio.php?start=$1 [L]
RewriteRule ^archive/?$ /archive.php [L]
RewriteRule ^archive/news-([A-Za-z0-9-]+)/?$ /archive.php?news_id=$1 [L]
RewriteRule ^archive/start-([A-Za-z0-9-]+)/?$ /archive.php?start=$1 [L]
RewriteRule ^archive/([A-Za-z0-9-]+)/?$ /archive.php?start=$1 [L]
RewriteRule ^servises/?$ /servises.php [L]
RewriteRule ^support/?$ /support.php [L]
RewriteRule ^about_us/?$ /about_us.php [L]
RewriteRule ^theory/?$ /theory.php [L]
Вот как это смотриццо на сайте - http://smalta.net/
metallphilin metallphilin вне форума
администратор форума
metallphilin Первый уровень
 
Регистрация: 05.10.2005
Сообщений: 1,543 шт.
Карма: 0 бал.
Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

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

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

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

Powered by vBulletin® Version 3.8.11 PL4;
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd;
Оператор обработки ПДн - ИП Алексеев А.С.;
ИНН: 333411310227; ОГРН: 307333419200050;
тел. +7 (4922) 49-42-22, legal@smalta.net;
Часовой пояс GMT +3, время: 07:12.
Любые сообщения на Альтернативном Форуме — являются субъективным отражением реальности, написавших их авторов и публикуются без предварительной модерации. Администрация форума не принимает на себя ответственность за содержание таких материалов. В рамках функционирования форума осуществляется хранение ограниченного набора данных: имя пользователя, адрес электронной почты, IP-адрес (в момент входа) и cookie для поддержки сессии. Метаданные пользователей обрабатываются и направляются в уполномоченные органы только при наличии официального запроса в порядке, установленном законодательством РФ. В случае выявления противоправного контента, пожалуйста, направляйте уведомление через кнопку «Жалоба» или форму обратной связи.
ИКС