Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Преобразование URL строки в читаемый вид.  (Прочитано 17374 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Avdey
Участник

ru
Offline Offline

« : 19-03-2012 03:56 » 

Подскажите пожалуйста как сделать, чтобы такой URL

   ммм.storeofnavi.ru/index.php?action=application

преобразовавылся в:
  
  ммм.storeofnavi.ru/application

Понимаю что это нужно делать с помощью модуля mod_rewrite в файле .htaccess, но почемуто не работает, делаю следующее:

1) В папке сайта на сервере создаю файл .htaccess;
2) Прописываю в нём следующий код:
 
  
Код:
 RewriteEngine on
  RewriteRule ^/([^/]+) index.php?action=$1
  

Данный пример был взят тут h**p://ruseller.com/lessons.php?rub_id=29&id=1364.
« Последнее редактирование: 19-03-2012 05:24 от Алексей1153++ » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 19-03-2012 06:20 » 

Расскажи о правиле, которое ты показал
Что ты хочешь этим добиться?
Что  из чего преобразовать?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Avdey
Участник

ru
Offline Offline

« Ответ #2 : 19-03-2012 06:33 » new

Я продублировал то что сказано в примере урока по ссылке в первом сообщении темы.
Вот что она говорит:

Одно возможное использование перенаправлений - изменение адресов URL к более простой форме для посетителей и поисковых роботов. Рассмотрим пример:

Код:
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) product.php?cat=$1&brand=$2&prod=$3

Данное правило позволяет использовать посетителю адрес URL наподобие products/turntables/technics/sl1210, который будет трансформироваться в product.php?cat=turntables&<WBR>brand=technics&prod=sl1210. Круглые скобки между слешами в регулярном выражении примера выполняют объединение в группы – мы можем использовать каждую из них как  $1, $2 и $3 соответственно. Комбинация [^/]+ в скобках соответствует любому символу, кроме слеша, в любых количествах.

А мне нужно чтобы я вводил

  www.storeofnavi.ru/application
 
а через .htaccess итерпретировал его как:
 
  www.storeofnavi.ru/index.php?action=application
« Последнее редактирование: 19-03-2012 06:37 от Avdey » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 19-03-2012 07:28 » 

нужно исследовать проблему

1. Разобрать строку, которая преобразуется
Что это за птички и галочки?
Что каждая птичка/галочка определяет?

А теперь представь себе
Ты модуль modrewrite и тебе нужно преобразовать строку.
Вот расскажи как ты это будешь делать?

зы я ответ знаю... Но раз ты пришел сюда с с вопросом, то ты ответ должен дать сам, ведь это у тебя не первый сайт, а ведь будет еще..

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Avdey
Участник

ru
Offline Offline

« Ответ #4 : 19-03-2012 13:56 » 

Это регулярные выражения, объяснение им нет на сайте, я и прошу подсказать, где можно про них почитать в отношении .htaccess файла, а не глумиться, как Вы это делаете!!!

Держите!!!

\   Экранирование. Считать следующий метасимвол обычным символом.
^   Метка начала строки.
$   Метка конца строки.
.(точка)   Заменяет собой любой произвольный символ, но только один. Кроме символа конца строки.
|   Логическое ИЛИ, варианты выборки.
()   Группировка.
[]   Класс символов. Например, [abc].
[^...]   Инвертированный класс символов. Например, [^abc].
« Последнее редактирование: 19-03-2012 14:21 от Avdey » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 19-03-2012 14:23 » 

Avdey, ты меня обидеть хочешь? (это я про глумиться) . Так тебе это не удастся Улыбаюсь

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

вот тебе по русски
http://www.egoroff.spb.ru/portfolio/apache/rewriteguide.html

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Avdey
Участник

ru
Offline Offline

« Ответ #6 : 20-03-2012 07:27 » 

  Я сделал так:

  
Код:
RewriteEngine on
  RewriteRule  ^(.+[^/])$  index.php?action=$1

  Прописываю http://storeofnavi.ru/start

На Денвере выдаёт
  Такая страница не найдена!!!

А на хосте вот что выдаёт см. тут http://storeofnavi.ru/start

Почему это всё не пойму.
  

* Вот что происходит на Денвере.png (210.18 Кб - загружено 908 раз.)
Записан
Avdey
Участник

ru
Offline Offline

« Ответ #7 : 20-03-2012 07:34 » 

Попробывал прописать проще:

Код:
 RewriteEngine on
  RewriteRule  ^(.*)$  index.php?action=$1

Всё тоже самое получается...

А вот если я прописываю вот так:

Код:
  RewriteEngine on
  RewriteRule  ^page/([^/]+)/?$  index.php?action=$1

И прописываю в браузере:

  http://storeofnavi.ru/page/application

То работает, но все картинки и стили css блочатся и не работают, а делаю так

Код:
  RewriteEngine on
  RewriteRule  ^([^/]+)/?$  index.php?action=$1

И прописываю в браузере:

  http://storeofnavi.ru/application

НЕ РАБОТАЕТ, в чём дело то. Регулярное выражение прписано же правильно.

() - делаем группу
[^/] - все символы кроме "/"
+ - повторяется несколько раз
/? - символ повторяется 0 или 1 раз
^.......$ - начало и конец строки
В сумме ^([^/]+)/?$

ЧТО ДЕЛАТЬ?




« Последнее редактирование: 20-03-2012 09:13 от Avdey » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 20-03-2012 13:36 » 

RewriteRule ^([a-zA-Z0-9_-]*)$ index.php?next=$1
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 20-03-2012 17:06 » 

http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewriterule
Avdey, внимательно почитай по ссылке. "What is matched?", "Per-directory Rewrites" и особено внимательно следующее:

Цитата
When using the rewrite engine in .htaccess files the per-directory prefix (which always is the same for a specific directory) is automatically removed for the RewriteRule pattern matching and automatically added after any relative (not starting with a slash or protocol name) substitution encounters the end of a rule set. See the RewriteBase directive for more information regarding what prefix will be added back to relative substitions.

По-русски: твое регулярное выражение должно иметь привязку к началу и начинаться с константы. По этому "page/..." у тебя работает, а все отсальное - нет. Для изменения логики используй регулярные выражения в RewriteCond - там шире возможности, а в RewriteRule тупое ".*". И не забывай начинать строку замены слешом.
« Последнее редактирование: 20-03-2012 17:19 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines