Вопрос по mod_rewrite

12
Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#11
Phessiv:
Если я правильно понял, то человек хочет чтобы с http://site.ru/index.php?point_id=1 перенаправлялось на http://site.ru/registration.html, тогда будет

NC прокомментирует

Phessiv:


RewriteEngine on
RewriteBase /
RewriteRule ^index.php?point_id=1$ registration.html [R,L]
RewriteRule ^index.php?point_id=2$ organisation.html [R,L]


Поправьте меня, если я не прав :)

Не будет работать.

В синтаксе регулярных выражений знак ? используется как количественный модификатор.

Модификаторы и спец. символы по идее можно экранировать, но в mod_rewrite так не получится.

[Удален]
#12
Phessiv:
Поправьте меня, если я не прав

Не правы, никаких редиректов.

Сначала что юзеру в урле показывается, потом чем обрабатывается.

RewriteRule ^registration\.html$ /index.php?point_id=1 [L]

Юзер будет видеть адрес registration.html, а реально будет работать скрипт index.php?point_id=1

[Удален]
#13
Алексей Барыкин:
Вряд ли.
Хочется обычно красивых урлов вида http://site.ru/registration.html а работать проще с урлами вида http://site.ru/index.php?point_id=1

Алексей Барыкин добавил 30.06.2009 в 21:29


По шагам рассказывайте что пробовали.

Работает мод реврайт.
Я даже проверил :)

Пробовал так:

RewriteEngine on

RewriteRule ^registration\.html$ /index.php?point_id=1 [L]

так:

RewriteEngine on

RewriteRule /index.php?point_id=1 ^registration\.html$ [L]

так:

RewriteEngine on

RewriteRule ^registration\.html$ /point_id=1 [L]

Все то же: The requested URL /index.php was not found on this server.

Gorr добавил 01.07.2009 в 07:49

javadf:
Не правы, никаких редиректов.
Сначала что юзеру в урле показывается, потом чем обрабатывается.
RewriteRule ^registration\.html$ /index.php?point_id=1 [L]
Юзер будет видеть адрес registration.html, а реально будет работать скрипт index.php?point_id=1

Проблема в том что ни страницы index.php ни скрипта index.php?point_id=1 не существует. Все было снесено. Сайт был переработан, залит на новый сервер с новыми страницами. А поисковые системы пока видят старые. Вот мне и нужно поставить в соответствие старым уже не существующим, адресам новые.

[Удален]
#14

Алексей Барыкин, понятно, спасибо :)

DyaDya
На сайте с 11.04.2007
Offline
147
#15

Ребят, что-то вы все подтупливаете или поджучиваете.

1. Ему нужно наоборот со страниц с параметром GET, на обычные.

Но... вроде, это поняли к 10-му посту ( хотя нужно уточнить;), надеюсь ТС поможет ).

2. Ваши регулярки не подойдут, потому что GET не обрабатывается в ваших примерах! Параметры GET нужно ловить в QUERY_STRING

Ух... если успею, набросаю сам код...

Phessiv:
Поправьте меня, если я не прав

не прав!

Вот, набросал...

RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^point_id=1$
RewriteRule ^(index\.php)$ /registration.html [R=301,L]

RewriteCond %{QUERY_STRING} ^point_id=2$
RewriteRule ^(index\.php)$ /organisation.html [R=301,L]

Остальные по аналогии...

p.s. работает именно для тех ссылок, что ТС дал, при наличии в url index.php, но если запрос будет просто site.ru/?point_id=1, то не сработает, конечно. Но поправить будет уже не сложно... Главное, смысл я уже передал.

Выбирайте качественный хостинг (http://vashmaster.ru/informaciya/o_poleznyh_programmah/news83.php) и продвигайте сайты в СЕОПУЛЬТ (http://seopult.ru/ref.php?ref=72b5ed9561fe66a1). А на «SAPE» я в обиде :) Не упрекайте за очепятки, пишу вслепую (http://ergosolo.ru/) и также делаю сайты (http://www.vashmaster.ru/) ;)
[Удален]
#16
DyaDya:
Ребят, что-то вы все подтупливаете или поджучиваете.
1. Ему нужно наоборот со страниц с параметром GET, на обычные.
Но... вроде, это поняли к 10-му посту ( хотя нужно уточнить;), надеюсь ТС поможет ).
2. Ваши регулярки не подойдут, потому что GET не обрабатывается в ваших примерах! Параметры GET нужно ловить в QUERY_STRING
Ух... если успею, набросаю сам код...


не прав!


Вот, набросал...



Остальные по аналогии...

p.s. работает именно для тех ссылок, что ТС дал, при наличии в url index.php, но если запрос будет просто site.ru/?point_id=1, то не сработает, конечно. Но поправить будет уже не сложно... Главное, смысл я уже передал.

ЕЕЕ. Заработало.

Получается, что изначально я дал неверное условие. НЕ думал, что все так сложно будет.

Прошу прощения.

Спасибо всем за старание и желание мне помочь. 😎

D
На сайте с 16.01.2009
Offline
3
#17

Тоже есть вопрос по mod_rewrite, но чтобы не плодить тем напишу тут, вообщем написал схему всё работает в норме


RewriteEngine On

RewriteRule ^([a-z]+)/([0-9]*) /index.php?name=$1&ch=$2

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


/index.php?name=$1&ch=$2&page=$3

Пробовал написать так

RewriteEngine On


RewriteRule ^([a-z]+)/([0-9]*)/([0-9]*).html /index.php?name=$1&ch=$2&page=$3
, но работает только, если запрос полный с тремя параметрами, но по идее скрипт может обрабатываться и с двумя как реализовать чтобы могло работать как с двумя так и с тремя.
[Удален]
#18
RewriteEngine On

RewriteRule ^([a-z]+)/([0-9]*) /index.php?name=$1&ch=$2
RewriteRule ^([a-z]+)/([0-9]*)/([0-9]*).html /index.php?name=$1&ch=$2&page=$3

как то так ...

12

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