|
|
|
| всех приветсвую, пытаюсь изменить ссылки такого вида
www.server.ru/catalog/edit.php?action=edit&id=21
на
www.server.ru/catalog/edit_1_21.html
если это вообще возможно, то как составить RewriteRule ?
и ещё, вот есть каталог и там есть сортировка, ссылки там выглядять поразному
примерно так
www.server.ru/catalog/index.php?cat=4&sortid=6&sortorder=asc
www.server.ru/catalog/index.php?cat=3&sortid=8&sortorder=desc
www.server.ru/catalog/index.php?page=17&cat=76&sortid=4&sortorder=desc
www.server.ru/catalog/index.php?page=3&cat=76
www.server.ru/catalog/index.php?page=1
тоесть некоторые параметры могут менятся, или их могут не быть
что с такой ссылкой можно придумать, чтобы смотрелась покрасивее?
хотелось чтобы выглядело примерно так
www.server.ru/catalog/sort_3_76_4_2.html
тоесть через прочерк передавались параметры, как это реально сделать?
сейчас у меня с условием
RewriteRule ^cat_([0-9]*)\.html$ catalog/index.php?cat=$1
|
ссылки выглядят так
www.server.ru/catalog/cat_4.html
в место
www.server.ru/catalog/index.php?cat=4
поэтому хотелось чтобы все ссылки были одинаковыми | |
|
|
|
|
|
|
|
для: Иван
(29.10.2005 в 15:57)
| | В большим количеством параметров уже не так изящно получается.
Я бы предложил обыграть вот такую схему
www.server.ru/catalog/index.php?cat=4&sortid=6&sortorder=asc
www.server.ru/catalog/cat/4/sortid/6/sortorder/asc/
|
www.server.ru/catalog/index.php?page=17&cat=76&sortid=4&sortorder=desc
www.server.ru/catalog/cat/76/sortid/4/sortorder/desc/page/17
|
www.server.ru/catalog/index.php?page=3&cat=76
www.server.ru/catalog/cat/76/page/3
|
Я, кстати, совсем не уверен, что вот такие ссылки
www.server.ru/catalog/sort_3_76_4_2.html
или такие
www.server.ru/catalog/cat/76/sortid/4/sortorder/desc/page/17
являются более красивыми и понятными, чем обычно. Порой становится даже хуже. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(29.10.2005 в 18:56)
| | это тоже вариант, можно даже и так оставить, приколько,
но вот как это все сотворить?
кстати, почему ты считаешь свой вариант не красиво, есть другое решение? | |
|
|
|
|
|
|
|
для: Иван
(29.10.2005 в 19:40)
| | > почему ты считаешь свой вариант не красиво, есть другое решение?
По мне - он ужасен :)
Лично мне читать такой URL сложнее и он более труден для понимания.
Он ничуть не улучшает восприятие и читабельность URL-а (а ведь к этому стремились). Но требует дополнительных действий по его преобразованию. А дополнительные операции всегда повышают вероятность ошибки.
Но других решений не знаю.
>но вот как это все сотворить?
Можно двигаться вот в таком направлении
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^([^/]*)/([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)$ catalog/index.php?$1=$2&$3=$4&$5=$6
|
Используя следующую логику в URL
www.server.ru/параметр/значение/параметр/значение/параметр/значение/параметр/значение
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(30.10.2005 в 00:09)
| | Спасибо большое, и у меня ещё один такой вопрос, пытаюсь сделать такие ссылки
www.server.ru/news/2005/11/23/878.html
из
www.server.ru/index.php?cat=news&y=2005&m=11&d=23&n=878
RewriteRule ^([a-zA-Z]*)?/?([0-9]{4})?/?([0-9]{1,2})?/?([0-9]*)?/?([0-9]*).html$ /index.php?cat=$1&y=$2&m=$3&d=$4&n=$5
|
думаю тут в принципе всё понятно, так вот, все работает присутствии $5.html, но как только я даляю т.е так
www.server.ru/news/2005/11/23/
то выводиться 404 ошибка | |
|
|
|
|
|
|
|
для: Иван
(30.10.2005 в 13:21)
| | с вопросом я разобрался, вот только тут одна проблема, когда меняю
http://localhost/sitenews/news/2005/02/26/121.html
в место
http://localhost/sitenews/news_list.php?category=news&y=2005&m=02&d=26&nid=121
по регулярке
RewriteRule ^([a-zA-Z]*)?/?([0-9]{4})?/?([0-9]{1,2})?/?([0-9]{1,2})?/?([0-9]*)/$ sitenews/news_list.php?category=$1&y=$2&m=$3&d=$4
RewriteRule ^([a-zA-Z]*)?/?([0-9]{4})?/?([0-9]{1,2})?/?([0-9]{1,2})?/?([0-9]*)?/?.html$ sitenews/news_review.php?category=$1&y=$2&m=$3&d=$4&nid=$5
то от сюда видно что подрробная новость выводиться через файл news_review.php
а список новостей выводится через news_list.php
всё работает как нужно, проблема заключается только водном, почему когда я набираю ссылку
http://localhost/sitenews/ или так http://localhost/sitenews/index.php да любой другой файл то мне выводиться сообщение о том что нет такой новости, сообщение выводиться через файл news_list.php
так вот как сделать чтобы этого небыло, и страница грузилась через файл index.php поскольку это главная страница | |
|
|
|
|
|
|
|
для: Иван
(31.10.2005 в 20:42)
| | Хм… а у меня все отлично отрабатывает.
http://localhost/sitenews/ и http://localhost/sitenews/index.php открывает именно index.php в директории sitenews.
Вы можете наблюдать за преобразованиями, которые выполняет Apache. Добавьте в httpd.conf директивы
RewriteLog logs/mysite-rw.log
RewriteLogLevel 9
|
9 – максимальный уровень детализации логов | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(01.11.2005 в 23:32)
| | вот сейчас нормально работает
RewriteBase /sitenews/
RewriteRule ^[a-zA-Z]*/([a-zA-Z]*)?/?([0-9]{4})?/?([0-9]{1,2})?/?([0-9]{1,2})?/?([0-9]*)?/{0,1}$ news_list.php?category=$1&y=$2&m=$3&d=$4
RewriteRule ^[a-zA-Z]*/([a-zA-Z]*)?/?([0-9]{4})?/?([0-9]{1,2})?/?([0-9]{1,2})?/?([0-9]*)?/?.html$ news_review.php?category=$1&y=$2&m=$3&d=$4&nid=$5
http://localhost/sitenews/sport/2005/02/26/120.html
http://localhost/sitenews/sport/2005/02/26/
http://localhost/sitenews/sport/2005/02/
http://localhost/sitenews/sport/2005/
http://localhost/sitenews/sport/
вот только я совниваюсь, что тут что-то не так, вроде вс работает, может употребление слэшев много, случаем никак нельзя уменьшить их?
вот интересно как другие делают... | |
|
|
|
|
|
|
|
для: Иван
(02.11.2005 в 04:38)
| | >вот интересно как другие делают...
Я бы, наверное, также сделал. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(02.11.2005 в 10:05)
| | вот можно ещё добавить ниже строчку для коментариев
RewriteRule ^[a-zA-Z]*/([a-zA-Z]*)?/?([0-9]{4})?/?([0-9]{1,2})?/?([0-9]{1,2})?/?commet_([0-9]*)?/?.html$ news_commet.php?category=$1&y=$2&m=$3&d=$4&nid=$5
http://localhost/sitenews/sport/2005/02/26/commet_120.html
вот только сижу сейчас голову ломаю, как сделать проверку и каждому параметру выдать свою страницу, допустим для параметра просмотреть новость за день должна выдоваться одна страница, а для просмотре за месяц другая, ну и так далее, а вот для просмотра за год можно было выводить календарь за 12 месяцем, причём так чтобы была проверка, чтобы никто другой немог ввести год неправельный, или месяц с днём, иначе выдать ошибочную страницу, так бы посмотреть как другие делают, а то чет неполучается | |
|
|
|
|
|
|
|
для: Иван
(02.11.2005 в 12:06)
| | Так а может быть Вам эту логику в php скрипте реализовать. Зачем Вам для этого mod_rewrite.
С помощью mod_rewrite вы уже сделали "красивые ссылки". Пусть теперь это все переадресуется на одну страницу, а уже на ней вы и проводите разбор: какие данные запрошены, какие блоки (страницы) нужно include-ить. Уникальности URL-а вы уже добились, а внутреннюю логику реализовывайте на PHP. Я бы так сделал. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(03.11.2005 в 21:27)
| | Млин, задолбался я уже, ну не м огу сообразить )))
В общем, изначальные ссылки на сайте http://site.com/?price и http://site.com/?categoryID=1
Мне нужно, что бы при вызове http://site.com/1.html открывалась первая ссылка, а при вызове
http://site.com/category1.html вызывалась вторая ссылка
Если в .htaccess написать
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*).html$ index.php?$1
|
То первый случай работает, а втрой нет
Если написать
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*).html$ index.php?categoryID=$1
|
То работает второй случай
Вместе никак! Почему-то при первом случае(первом коде) http://site.com/categoryID=1.html не работает, хотя должно, ведь похожие ссылки (настоящяя http://site.com/?aux_page=aux1) работают (эту страницу можно вызвать http://site.com/aux_page=aux1.html)
Не могу понять!
PS еще не могу понять, почему при втором коде ссылка http://site.com/categoryID=1.html?offset=20 не работает | |
|
|
|
|
|
|
|
для: V!rus
(04.11.2005 в 18:05)
| | Что-то не ясно что во что преобразовывать.
Первоначально Вы писали
http://site.com/1.html
в
http://site.com/index.php?1
|
http://site.com/category1.html
в
http://site.com/?categoryID=1
|
А потом Вы описываете вот такие ссылки странного вида?
http://site.com/categoryID=1.html
http://site.com/categoryID=1.html?offset=20
|
? | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(04.11.2005 в 23:40)
| | Если не трогать .htaccess то ссылки такие:
http://site.com/index.php?что-то1
http://site.com/index.php?categoryID=что-то2
http://site.com/index.php?productID=что-то3
http://site.com/index.php?categoryID=что-то2&offset=что-то4
http://site.com/index.php?categoryID=что-то2&show_all=что-то5
|
Мне нужно что бы были такие
http://site.com/что-то1.html
http://site.com/category_что-то2.html
http://site.com/product_что-то3.html
http://site.com/category_что-то2_что-то4.html
http://site.com/category_что-то2__что-то5.html
|
| |
|
|
|
|
|
|
|
для: V!rus
(05.11.2005 в 02:46)
| | Попробуйте вот так:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^category_([^_]*)__([^_]*).html$ index.php?categoryID=$1&show_all=$2 [L]
RewriteRule ^category_([^_]*)_([^_]*).html$ index.php?categoryID=$1&offset=$2 [L]
RewriteRule ^category_(.*).html$ index.php?categoryID=$1 [L]
RewriteRule ^product_(.*).html$ index.php?productID=$1 [L]
RewriteRule ^(.*).html$ index.php?$1
|
PS:
Каждая инструкция RewriteRule, естественно, должна быть в одну строку. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(06.11.2005 в 22:30)
| | Спасибо, счас проверю! | |
|
|
|