Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Нестандартный ЧПУ
 
 автор: lElectroHardl   (23.01.2012 в 18:24)   письмо автору
 
 

Здравствуйте.
Не могу понять, как сделать следующие.
Все понятно, все работает:
RewriteRule ^page/([A-Za-z0-9-_().]+)/? index.php?page=$1 [L]
=>
site.oeg/page/music/ == site.oeg/index.php?page=music

Но как сделать (в примере выдается ошибка 404, print_r(); - выдает бред):
RewriteRule ^([A-Za-z0-9-_().]+)/? index.php?page=$1 [L]
=>
site.oeg/music/

Не хочется делать ЧПУ на PHP (сейчас на сайте так и есть) - это геморойно и хрупко.

Посоветуйте, что можно сделать?

  Ответить  
 
 автор: cheops   (23.01.2012 в 18:48)   письмо автору
 
   для: lElectroHardl   (23.01.2012 в 18:24)
 

Ну как миниму для начала при помощи RewriteCond нужно запретить применение правила для index.php. Ведь после преобразования site.oeg/music/ в site.oeg/index.php?page=music, правило опять применяется к index.php, а это имя опять удовлетворяет ^([A-Za-z0-9-_().]+)/? и так до тех пор, пока mod_rewrite не прекращает это циклическое погружение.

  Ответить  
 
 автор: lElectroHardl   (23.01.2012 в 21:58)   письмо автору
 
   для: cheops   (23.01.2012 в 18:48)
 

Как это написать. Подскажите. А то чувствую, с моей помощью сервер никогда не запуститься :)

  Ответить  
 
 автор: cheops   (23.01.2012 в 22:59)   письмо автору
 
   для: lElectroHardl   (23.01.2012 в 21:58)
 

Посмотрите вот эту тему http://softtime.ru/forum/read.php?id_forum=5&id_theme=81942, там правда index.html, но RewriteCond как раз для вашего случая.

  Ответить  
 
 автор: lElectroHardl   (24.01.2012 в 00:31)   письмо автору
 
   для: cheops   (23.01.2012 в 22:59)
 

Взял. Все нормально. Все работает.
Но в чем соль... У меня структура ссылок такого уровня:
site.org/index.php?page=music&genre=electro
site.org/index.php?page=music&page=2
site.org/index.php?page=music&author=Linkin_Park
site.org/index.php?page=music&author=Linkin_Park&album=two

Т.е. второго уровня (genre, page, author) могут принимать разные значения. И я не знаю, какая именно сейчас переменная выбрана пользователем.
Если делать ЧПУ стандартным методом, то в переменной $page может попасться название исполнителя, что вызовет ошибку...Если делать ЧПУ стандартным методом, то в переменной $page может попасться название исполнителя, что вызовет ошибку...Если делать ЧПУ стандартным методом, то в переменной $page может попасться название исполнителя, что вызовет ошибку...
Я не знаю, как узнать, для какой переменной я сейчас буду делать "понятный УРЛ", для номера страниц, для жанра музыки или для исполнителя. Вот как эту структуру сделать?

Помогите собрать мозг в кучу :) (простите за тофтологию)

  Ответить  
 
 автор: Sfinks   (25.01.2012 в 14:40)   письмо автору
 
   для: lElectroHardl   (24.01.2012 в 00:31)
 

Я обычно чисто для себя (пользователю это не видно) разделяю урл на участки, которые всегда обозначают одно и только одно. Например урл
http://site.ru/a/126(2)/12456/
будет обозначать исполнитель на букву А, ид исполнителя в БД - 126, страница 2, песня 12456 и порядок цифр в урл не меняется на всем сайте.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования