@Mois

Редирект со стаарых URL на переделанные ЧПУ?

Решил позаботиться о более менее читаемых урлах
Идея такая:
Было:                      Стало:
ex.com/maker.php?id=mois   ex.com/maker/mois
ex.com/condition.php?id=1  ex.com/condition/1
ex.com/expample.php        ex.com/expample


Соответсвенно написал в .htaccess

RewriteEngine on

RewriteRule ^maker/([a-z]+)/? maker.php?id=$1 [L]
RewriteRule ^maker/([a-z]+)? maker.php?id=$1 [L]

RewriteRule ^condition/([0-9]+)/? condition.php?id=$1 [L]
RewriteRule ^condition/([0-9]+)? condition.php?id=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)/$ $1.php


И все работает, да вот только теперь нужно, что бы при переходе по старым ссылкам был редирект на новые , с кодом ответа сервера 301 (для поисковиков).

Написал такое (не работает):
RewriteCond %{QUERY_STRING} ^id=([a-z]+)$ [NC]
RewriteCond %{QUERY_STRING} !htaccess=Y
RewriteRule ^(.*) /maker/%1? [R=301,L]


Но походу постоянный редирект (со старого урла на новый, и обратно) теперь получается.
  • Вопрос задан
  • 238 просмотров
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
# 301 --- ex.com/maker.php?id=1 => ex.com/maker/1
RewriteCond %{QUERY_STRING} (^|&)id\=1($|&)
RewriteRule ^ex\.com/maker\.php$ http://ex.com/maker/1? [L,R=301]

# 301 --- ex.com/condition.php?id=1 => ex.com/condition/1
RewriteCond %{QUERY_STRING} (^|&)id\=1($|&)
RewriteRule ^ex\.com/condition\.php$ http://ex.com/condition/1? [L,R=301]

# 301 --- ex.com/expample.php => ex.com/expample
RewriteRule ^ex\.com/expample\.php$ http://ex.com/expample? [L,R=301]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы