Помогите с ЧПУ и mod_rewrite

12
Евгения Бахвалова
На сайте с 26.05.2008
Offline
83
1195

Ребят, подскажите, если кто вдруг не спит, как я. Как в хтаксессе с помощью mod_rewrite преобразовать один конкретный урл в другой. Как-то очень просто, без всяких регулярных выражений, но у меня всё не получается, ррр.

Еня Беарт (http://www.beart.ru) Не ждите чуда - чудите сами.
siv1987
На сайте с 02.04.2009
Offline
427
#1

Преобразовать или переадресовать?

матчасть

RewriteRule шаблон что_подставлять_серверу [флаги]

Евгения Бахвалова
На сайте с 26.05.2008
Offline
83
#2

siv1987, преобразовать. А можно не мч, а готовую фишку, если не очень сложно, а? Допустим, мне надо преобразовать www.site.ru/cat1/ в www.site.ru/catalog/.

siv1987
На сайте с 02.04.2009
Offline
427
#3

Как же это... без матчасти?

Пример:

RewriteEngine On

RewriteRule ^cat1/ catalog/ [L]

Если набрать в адресной строке site/cat1/ реврайт "подставит" серверу site/catalog/

Как-то так.

Давайте лучше что у вас там не получается.

temmokan
На сайте с 18.08.2008
Offline
131
#4

Телепаты, как всегда, в отпуске. Дайте пример - что во что преобразовать. И да, есть много справочников.

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

На русском языке, навскидку:

http://www.opennet.ru/base/dev/mod_rewrite_guide.txt.html

Евгения Бахвалова
На сайте с 26.05.2008
Offline
83
#5

siv1987, спасиба, я так и написала, а он не хочет, не реврайтит. Он переправляет на 404-ю, то есть, получается, редиректит на несуществующую страницу(((.

temmokan, я почитала, попробовала разные варианты, не хочет, поэтому и спрашиваю, вдруг кто подскажет, что точно надо прописать, а то уже замучилась. Надо sks/molex/catalog/UTP/ преобразовать в sks/molex/catalog/UTP_kabel_unshielded_twisted_pair.

siv1987
На сайте с 02.04.2009
Offline
427
#6

Значит все таки что-то не правильно написали раз выдает 404 страницу, т.е. ссыль не рервайтится)

Конкретно ваше преобразование будет выглядеть так:

RewriteEngine On

RewriteRule ^sks/molex/catalog/UTP/$ sks/molex/catalog/UTP_kabel_unshielded_twisted_pair [L]

Если там уже юзаются ЧПУ то добавлять нужно после RewriteEngine On или после редиректа с ввв на без если таковой имеется.

Кстати, а сама страница по адресу sks/molex/catalog/UTP_kabel_unshielded_twisted_pair открывается?

temmokan
На сайте с 18.08.2008
Offline
131
#7
temmokan, я почитала, попробовала разные варианты, не хочет, поэтому и спрашиваю, вдруг кто подскажет, что точно надо прописать, а то уже замучилась. Надо sks/molex/catalog/UTP/ преобразовать в sks/molex/catalog/UTP_kabel_unshielded_twisted_pair.

RewriteEngine On

RewriteRule ^sks/molex/catalog/UTP/$ sks/molex/catalog/UTP_kabel_unshielded_twisted_pair [L]

Если выдаёт 404, то два вопроса: по какому адресу обращаетесь,

http://example.com/sks/molex/catalog/UTP

или

http://example.com/sks/molex/catalog/UTP/

и - существует ли адресат, т.е.

http://example.com/sks/molex/catalog/UTP_kabel_unshielded_twisted_pair

(не выдаёт ли он 404)

Если http://example.com/sks/molex/catalog/UTP - каталог (не файл), и при обращении к нему выдаётся 404, а по http://example.com/sks/molex/catalog/UTP/ выдаётся то, что нужно (индексный файл или список элементов), то, возможно. следует воспользоваться такой конструкцией:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [R]

(если адрес не заканчивается слэшем, и нет такого файла, то перенаправит сервер на тот же адрес с добавленным слэшем)

Евгения Бахвалова
На сайте с 26.05.2008
Offline
83
#8

siv1987, понятна, значит, не получится каменный цветок, видима, может, в апаче чего-то где-то не так?

Да, написала это преобразование после редиректа с ввв, такой есть. И, убрав его, тоже попробовала, всё равно пересылает на "Страница не найдена".

Сама страница sks/molex/catalog/UTP_kabel_unshielded_twisted_pair не открывается, её же не существует. А она должна существовать для преобразования? Тогда и преобразовывать нет смысла, легче страницу просто создать.

siv1987
На сайте с 02.04.2009
Offline
427
#9
не получится каменный цветок, видима, может, в апаче чего-то где-то не так

С апачем все в порядке.

Сама страница sks/molex/catalog/UTP_kabel_unshielded_twisted_pair не открывается, её же не существует.

А ведь так хорошо все начиналось..

Ну тогда все правильно. Как же вы хотите запросить страницу по другому адресу если даже основного нету? Вот поэтому вас и перебрасывает. Реврайт перехватывает шаблон - sks/molex/catalog/UTP, подставляет серверу другой урл, тот возвращает статус 404 и происходит внешний редирект.

Евгения Бахвалова
На сайте с 26.05.2008
Offline
83
#10
temmokan:
Если выдаёт 404, то два вопроса: по какому адресу обращаетесь,
http://example.com/sks/molex/catalog/UTP
или
http://example.com/sks/molex/catalog/UTP/

и - существует ли адресат, т.е.
http://example.com/sks/molex/catalog...d_twisted_pair
(не выдаёт ли он 404)

Спасибо за то, что помогаете. И с слешом, и без слеша выдает одно и то же, 404-ю. И страница тоже её выдает. Я, наверное, просто туплю, то есть преобразовать существующий урл в несуществующий нельзя средствами реврайта?

Евгения Бахвалова добавил 18.01.2011 в 05:00

siv1987, аааа, точно, это я накосячила, наоборот тогда сделать можно ведь, да?

RewriteRule ^sks/molex/catalog/UTP_kabel_unshielded_twisted_pair$ sks/molex/catalog/UTP/ [L]

Евгения Бахвалова добавил 18.01.2011 в 05:03

Правда, на фик это надо, ведь получится 2 дубля.

Ладно, спасибо большое, помогли!!!

12

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