Настройка ЧПУ

12
galaid
На сайте с 13.09.2011
Offline
16
690

Здравствуйте. Имеются ссылки вида:

site.ru/post.php?id=1

Необходимо привести их к следующему виду:

site.ru/post/1/

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

Получить вторую ссылку мне удалось, но вот с автоматическим переходом возникли проблемы.

Также хочу задать еще один вопрос. Можно ли в .htaccess при помощи RewriteRule указать, чтобы при переходе по

site.ru/post/

появлялось сообщение об ошибке.

uberchel
На сайте с 16.01.2010
Offline
70
#1

Держите

RewriteEngine On

ErrorDocument 404 /post/

RewriteRule ^(\d+)/$ ?id=$1 [L]
siv1987
На сайте с 02.04.2009
Offline
427
#2

RewriteEngine On

RewriteRule ^post/(\d+)/$ post.ru?id=$1 [L]

Если post.ru действительно post.ru а не post.php.

uberchel:
ErrorDocument 404 /post/

А это вообще делает все наоборот, нежели что хочет ТС.

galaid
На сайте с 13.09.2011
Offline
16
#3
siv1987:
Если post.ru действительно post.ru а не post.php.

Ошибочка. Исправил.

siv1987:
RewriteEngine On
RewriteRule ^post/(\d+)/$ post.ru?id=$1 [L]

Все хорошо. Только при переходе по первой ссылке редирект на новую не происходит. Таким образом страница доступна по двум адресам.

siv1987
На сайте с 02.04.2009
Offline
427
#4
galaid:
Только при переходе по первой ссылке редирект на новую не происходит.

При этих правилах было бы странно если бы он происходил.

galaid
На сайте с 13.09.2011
Offline
16
#5
siv1987:
При этих правилах было бы странно если бы он происходил.

С помощью .htaccess это можно сделать? А конкретно с помощью RewriteRule? Или тут уже php?

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

Можно.....

iren K
На сайте с 28.12.2008
Offline
222
#7
siv1987:
Можно.....

лаконичность - наше фсе

c уважением Iren
siv1987
На сайте с 02.04.2009
Offline
427
#8

Перед

RewriteRule ^post/(\d+)/$ post.ru?id=$1 [L]

добавить

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteCond %{QUERY_STRING} ^id=(\d+)

RewriteRule ^post\.php /post/%1/? [R=301,L]

galaid
На сайте с 13.09.2011
Offline
16
#9

siv1987, спасибо. Добавил все работает. Попробую теперь разобраться.

galaid
На сайте с 13.09.2011
Offline
16
#10
siv1987:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^id=(\d+)

Не могли бы дать пояснения к этим командам? В сети нашел только их синтаксис и пару примитивных примеров.

12

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