Форум программистов, компьютерный форум, киберфорум
Apache, htaccess
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/34: Рейтинг темы: голосов - 34, средняя оценка - 4.76
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773

Не знаю как сделать простой пример по mod_rewrite

26.12.2012, 09:21. Показов 7503. Ответов 70
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
привет всем. Недавно задумался сделать ЧПУ, но немного не понял как это сделать. Короче ссылка у меня вот такая stail.ru/category/tasks_category?cat=stroitel&page=1. В общем у меня есть контролер tasks_category.php в котором в зависимости от полученной переменной подставляется в переменную cat транслит категории. Вторая переменная это постраничная навигация указывает страничку категории. Зарание большое спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.12.2012, 09:21
Ответы с готовыми решениями:

Не знаю как сделать простой скрипт.
Помогите со скриптом, мне он нужен для одной сети Я хочу разместить картинку в гостевую книгу чтоб при загрузке картинки работал скрипт и...

В класс "Множество" добавить методы по обработке
Есть готовая лаба, нужно переделать под другой вариан Помогите, пожалуйста..... Порядок выполнения работы. 1. Выбрать класс АТД в...

Подскажите как сделать mod_rewrite
Решил настроить на сайте .htaccess, чтобы адреса страниц были красивые, но! Весь поиск перерыл, всю голову сломал... ничего не получается...

70
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
29.12.2012, 00:23  [ТС]
Студворк — интернет-сервис помощи студентам
Это конечно все так, но все, что было то все и осталось у меня раньше в .htaccess было прописано
Code
1
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
и все работало нормально, а мне надо преобразовать ссылку вот такого вида http://stail.ru/category/tasks... tel&page=1 то есть http://stail.ru/category/tasks_category уже преобразовано а мне надо еще преобразовать cat=stroitel&page=1 вот именно в чем загвоздка. У меня еще есть и другие странички, например такого вида http://stail.ru/order/cancel_task?order_id=35, здесь тоже http://stail.ru/order/cancel_task уже преобразовано и надо преобразовать order_id=35. Пытался я продолжить
Code
1
RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?page=$1&rem=$2 [L]
добавлял свои Get переменные ничего не вышло. Что мне делать?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.12.2012, 10:50
Цитата Сообщение от Братуха Посмотреть сообщение
а мне надо еще преобразовать cat=stroitel&page=1
Code
1
RewriteRule ^([A-z]+)/page-([0-9]+)/?$ index.php?cat=$1&page=$2 [QSA,L]
Цитата Сообщение от Братуха Посмотреть сообщение
например такого вида http://stail.ru/order/cancel_task?order_id=35, здесь тоже http://stail.ru/order/cancel_task уже преобразовано и надо преобразовать order_id=35
вроде это уже где то было..
Code
1
RewriteRule ^order/cancel_task/([0-9]+)/?$ order/cancel_task?order_id=35 [L]
1
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
29.12.2012, 10:52  [ТС]
KOPOJI, ответьте хоть что нибудь, что мне делать?
интернет тормозит предыдущий пост не показал.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.12.2012, 10:55
Братуха, почитайте ту тему, на которую я давал ссылку. Там написано как сделать - для основы хотя бы. А когда уже поймете принцип того, как это работает - тогда уже пишите и регулярки составим А то как то не очень прет все объяснять по N-ному разу
1
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
29.12.2012, 12:20  [ТС]
Неудобно спрашивать,но я все же спрошу вот что у меня в
Code
1
2
3
4
5
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
 
RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?page=$1&rem=$2 [L,QSA]
RewriteRule ^register/personal_list/([0-9]+)/?$ register/personal_list?id=$1 [L]
Все работает, но правильно ли я насчет [L,QSA]
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.12.2012, 12:26
Братуха, я не знаю, смотря как вам надо. QSA - Это для передачи других GET-параметров как есть в скрипт
Т.е. к примеру у вас вот здесь
Цитата Сообщение от Братуха Посмотреть сообщение
Code
1
RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?page=$1&rem=$2 [L,QSA]
если перейти по адресу site.ru/main/home/?foo=bar то будет все нормально, у вас в $_GET['foo'] будет bar (помимо всех остальных значений). Если уже убрать флаг QSA, то другие GET-параметры (кроме заданных в .htaccess) будут игнорироваться
1
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
30.12.2012, 10:37  [ТС]
У меня без QSA вообще не работает именно что следует после stail.ru/category/tasks_category вот именно те GET данных что идут после.

Добавлено через 37 минут
сейчас попробовал сделать вот так
Code
1
RewriteRule ^category/tasks_category/([A-z]+)/([0-9]+)/?$ category/tasks_category?cat=$1&page=$2 [QSA,L]
и ничего не вышло даже без этой строчки почему-то по старому адресу например http://stail.ru/category/tasks... tel&page=1 пишет что страничка не доступна , в чем может быть проблема в общем когда я заменяю
Code
1
2
3
4
5
RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?page=$1&rem=$2 [L,QSA]
 
на 
 
RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?page=$1&rem=$2 [L]
показывает что страничка есть, но переменных не определяет.

Добавлено через 21 час 9 минут
KOPOJI, Подскажи хоть что нибудь, может надо что-то переделать на сайте, мне просто очень надо
0
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
02.01.2013, 14:15  [ТС]
Есть я это сделал проблема была в том что в этой строчке
Code
1
RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?page=$1&rem=$2 [L,QSA]
используется переменная page и page использовалась в
Code
1
RewriteRule ^category/tasks_category/([A-z]+)/([0-9]+)/?$ category/tasks_category?cat=$1&page=$2 [QSA,L]
из-за этого выдавало ошибку
KOPOJI, Можно еще один вопрос, как можно http://stail.ru/category/tasks_category превратить в http://stail.ru/tasks_category что бы ссылки были короче, возможно ли это в моем случае. Зарание большое спасибо

Добавлено через 53 минуты
Все нашел вот так вроде
Code
1
RewriteRule ^tasks_category/([A-z]+)/([0-9]+)/?$ category/tasks_category?cat=$1&pages=$2 [QSA,L]
Добавлено через 1 час 27 минут
А есть ли другой способ сделать короче ссылку, а то таким способом
Code
1
RewriteRule ^tasks_category/([A-z]+)/([0-9]+)/?$ category/tasks_category?cat=$1&pages=$2 [QSA,L]
грузит просто жесть, а иногда вообще не загружает. Зарание большое спасибо.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
02.01.2013, 14:27
Цитата Сообщение от Братуха Посмотреть сообщение
грузит просто жесть, а иногда вообще не загружает
это наверное у вас с инетом что-то
Цитата Сообщение от Братуха Посмотреть сообщение
А есть ли другой способ сделать короче ссылку
ну так я ж не знаю как у вас это должно быть короче можно, конечно, например, вот так:
Code
1
RewriteRule ^tasks/([A-z]+)/([0-9]+)/?$ category/tasks_category?cat=$1&pages=$2 [L]
1
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
02.01.2013, 16:25  [ТС]
У меня сайт тестируется на денвере, а вот начет кароче я имел ввиду может есть способ изменить вот эту строку
Code
1
RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?page=$1&rem=$2 [L,QSA]
что бы даже без get переменных было допустим вместо http://stail.ru/main/home просто http://stail.ru/home. Я пробовал сделать вот так
Code
1
RewriteRule ^([A-z]+)/?$ index.php?page=$1&rem=$2 [L,QSA]
так то оно работает, но уже не работают ссылки с get переменными, я там как только не менял ничего не вышло. Зарание большое спасибо
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
02.01.2013, 16:27
какие ссылки с GET-параметрами? Какой адрес вводите в браузере?
0
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
02.01.2013, 16:40  [ТС]
пытался делать вот так
Code
1
2
RewriteRule ^([A-z]+)/?$ index.php?page=$1&rem=$2 [L,QSA]
RewriteRule ^tasks_category/([A-z]+)/([0-9]+)/?$ tasks_category?cat=$1&pages=$2 [QSA,L]
в браузере вводил вот что http://stail.ru/tasks_category/uslugi/1
А сейчас вот это
Code
1
2
RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?page=$1&rem=$2 [L,QSA]
RewriteRule ^tasks_category/([A-z]+)/([0-9]+)/?$ category/tasks_category?cat=$1&pages=$2 [QSA,L]
адрес тот же, и все работает.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
02.01.2013, 16:48
Code
1
RewriteRule ^адрес_который_вводят$ адрес_который_видит_скрипт
Флаг L - означает закончить преобразования на данном этапе. Т.е. нашли соответствие, преобразовали для скрипта, закончили на этом
Флаг QSA - если есть дополнительные GET параметры - их передать тоже:
Code
1
RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?cat=$1&lol=$2 [L]
При заходе по адресу site.ru/foo/bar/ в index.php в $_GET будет такой массив
PHP
1
2
3
4
array(
[cat] => 'foo',
[lol] => 'bar'
)
При заходе по адресу site.ru/foo/bar/?id=1 в $_GET будет все равно такой же массив, $_GET['id'] не будет существовать. Если же добавить флаг QSA в регулярку, т.е. вот так:
Code
1
RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?cat=$1&lol=$2 [L,QSA]
то уже будет $_GET['id'] существовать, будет массив такого вида
PHP
1
2
3
4
5
array(
[cat] => 'foo',
[lol] => 'bar',
[id] => 1
)
Добавлено через 53 секунды
и я не пойму, как вы хотите чтобы выглядел адрес и как должен видеть его скрипт
0
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
02.01.2013, 17:09  [ТС]
Так у меня ведь и может пее6редоваться и нет именно в этой строчке
Code
1
RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?page=$1&rem=$2 [L,QSA]
в остальных я уже поставил [L] так все же как мне надо изменить
Code
1
RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?page=$1&rem=$2 [L,QSA]
что бы вместо http://stail.ru/main/home было http://stail.ru/home без всяких дополнительных правил потому что у меня вот этот способ
Code
1
2
3
  RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?page=$1&rem=$2 [L,QSA]
 
RewriteRule ^tasks_category/([A-z]+)/([0-9]+)/?$ category/tasks_category?cat=$1&pages=$2 [L]
У меня реально глючит по страшному если делать вот так
Code
1
2
3
  RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?page=$1&rem=$2 [L,QSA]
 
RewriteRule ^category/tasks_category/([A-z]+)/([0-9]+)/?$ category/tasks_category?cat=$1&pages=$2 [L]
Все нормально работает
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
02.01.2013, 17:15
Цитата Сообщение от Братуха Посмотреть сообщение
что бы вместо http://stail.ru/main/home было http://stail.ru/home без всяких дополнительных правил
так не получится.
Code
1
2
RewriteRule ^main/home/?$ /home/ [R=301,L]
RewriteRule ^home/?$ index.php?page=main&rem=home [L]
Добавлено через 2 минуты
Может, проще будет переделать через единую точку входа? Я до сих пор не могу понять что там не получается и что не так.. Возьмите любой фреймворк, средний сайт на нем можно написать за день-два.. либо вот тут посмотрите, тоже есть вариант http://habrahabr.ru/post/150267/
1
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
02.01.2013, 17:33  [ТС]
Я сейчас Вам все подробно объясню вот у меня есть вот это правило
Code
1
RewriteRule ^([A-z]+)/([A-z]+)/?$ index.php?page=$1&rem=$2 [L,QSA]
http://stail.ru/main/home вот так я попадаю на главную страничку
http://stail.ru/info/about вот так я попадаю на страничку о сайте
http://stail.ru/register/office вот так я попадаю на страничку личного кабинета
как мне написать правило, которое я Вам привел выше что бы вводить в браузер вот такие ссылки
http://stail.ru/home
http://stail.ru/about
http://stail.ru/office
именно на таких страничках никаких дополнительных get переменных не используется не знаю правильно ли, но я добился этого результата таким способом
Code
1
RewriteRule ^([A-z]+)/?$ index.php?page=$1&rem=$2 [L,QSA]
то есть у меня странички без get переменных работают отлично, но как прописать условие для страничек у которых добавлены дополнительные get переменные, например stail.ru/category/tasks_category?cat=stroitel&page=1, я не знаю как написать правило.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
02.01.2013, 17:47
Цитата Сообщение от Братуха Посмотреть сообщение
не знаю правильно ли
нет, не правильно.
Цитата Сообщение от Братуха Посмотреть сообщение
page=$1&rem=$2
$2 не существует. То, что в скобках - запоминается, по порядку соответственно $1, $2, $3 и т.д.
Code
1
2
3
RewriteRule ^home/?$ index.php?page=main&rem=home [L]
RewriteRule ^about/?$ index.php?page=info&rem=about [L]
RewriteRule ^office/?$ index.php?page=register&rem=office [L]
Так?

Добавлено через 2 минуты
Цитата Сообщение от Братуха Посмотреть сообщение
например stail.ru/category/tasks_category?cat=stroitel&page=1
Code
1
RewriteRule ^category/([A-z]+)/([0-9]+)/?$ category/tasks_category?cat=$1&page=$2 [L]
Добавлено через 46 секунд
stail.ru/category/stroitel/1 == stail.ru/category/tasks_category?cat=stroitel&page=1
1
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
02.01.2013, 17:57  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение

Code
1
RewriteRule ^category/([A-z]+)/([0-9]+)/?$ category/tasks_category?cat=$1&page=$2 [L]
stail.ru/category/stroitel/1 == stail.ru/category/tasks_category?cat=stroitel&page=1
Вот именно такой способ и у меня глючит, я думал что может Вы мне подскажите какой нибудь другой, ладно оставлю длинные ссылки. Спасибо за помощь.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
02.01.2013, 18:30
Цитата Сообщение от Братуха Посмотреть сообщение
Вот именно такой способ и у меня глючит
не может быть чтобы он глючил, тут не сложная регулярка. Это скорее у вас интернет глючит, проверьте на другом компе
1
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
02.01.2013, 18:46  [ТС]
Я еще раз Вам говорю что Сайт на денвере тестируется, причем здесь интернет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.01.2013, 18:46

mod_rewrite - как сделать ЧПУ?
Как через ф-цию mod_rewrite сделать ЧПУ?

Простой код на haskell (элементарное) - не знаю как это в python реализовать
adjectives = nouns = funnn = ввожу в консоли funnn и вот output: *F_world> funnn

пример на файлы. у меня в коде есть ошибки, но я не знаю, как их исправить
по заданному списку фамилий напечатать каждому упомянутому в списке поздравление к определенному празднику. чтобы избежать шаблона,...

Как сделать ошибку 404 в .htaccess при mod_rewrite
Всем доброго времени суток. Есть следующий код RewriteRule ^administrator$ /admin.php Он преобразовывает admin.php administrator....

Как управлять led с клавиатуры ? Есть простой пример ?
Например на клавиатуре нажимаю 1, светится led на 9 пине ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru