Опять ЧПУ :(

LH
На сайте с 25.01.2011
Offline
7
366

Есть

.htaccess

RewriteEngine on 

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]

Ссылки должны быть: http://site.org/?page=1&author=3&album=8 => http://site.org/music/name_author/album_name

Я не знаю, как занести в переменную $url значение url`а (music, name_author, album_name), дабы по их значениям выбрать из базы нужные строки.

Как быть? Нашел в инете готовые решения но скрипты возвращают суровые результаты...

ДП
На сайте с 23.11.2009
Offline
203
#1

У вас вопрос сейчас в чем? Сделать редирект со старых ссылок типа

http://site.org/?page=1&author=3&album=8 на новые http://site.org/music/name_author/album_name ?

Или как строку http://site.org/music/name_author/album_name разовбрать на переменные?

LH
На сайте с 25.01.2011
Offline
7
#2

Вопрос в том, есть ли способ после обработки ссылки в ЧПУ (http://site.org/music/name_author/album_name) перегнать ее составные части в переменные, как и было раньше:

$page = "music";

$author = "name_author";

$album = "name_album";

Я понимаю, что можно взять и разбить массив $_SERVER["REQUEST_URI"]... Но в полученном массиве будут только:

music

name_author

name_album

Очень трудно и безошибочно будет ориентироваться, что массив [1] => "music" и т.д.

ДП
На сайте с 23.11.2009
Offline
203
#3

Ну вообще говоря вы все правильно мыслите. Просто вам надо ссылки генерировать правильно на всем сайте - тогда проблем с определением частей не будет.

LH
На сайте с 25.01.2011
Offline
7
#4

Будем делать тогда :)

И еще вопрос.

У меня на серваке есть папка "/music". И ссылка у меня есть "http://site.org/music/". Денвер ругается. что такой ссылки нет (в htaccess стоит <Options -Indexes>). на хостинге не пробовал.

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

(менять название ссылок/папок - не вариант)

ДП
На сайте с 23.11.2009
Offline
203
#5

RewriteCond %{REQUEST_FILENAME} !-d - вот эта директива означает, что не должно срабатывать правило, если есть папка с таким же именем.

Если честно, то не знаю, как себя поведем сервер, если будут запрашивать файлы из этой папки (для файлов аналогична директива с ключом -f).

LH
На сайте с 25.01.2011
Offline
7
#6

Вероятно, все из-за локального сервера. Но нормальном хостинге думаю все будет ок.

Спасибо за ответы.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий