lenk0belk0
@lenk0belk0
программироваю

Как правильно сделать переадресацию rewrite в htaccess?

Добрый день! Пытаюсь перевести сайт на новые урлы.
Нужно делать переадресации вида
  • mydomain.ru/pages/about -> mydomain.ru/about
  • mydomain.ru/news.php -> mydomain.ru/news
  • mydomain.ru/pages/articles/{id}-> mydomain.ru/articles/somename

при этом еще для всех запросов происходит внутренний редирект на адрес mydomain.ru/index.php?query={uri}
первые два вида сделала через htaccess, третий вид переадресуется в скрипте
написала такие правила для htaccess:
Redirect 301 /news.php /news
Redirect 301 /pages/about /about

<IfModule mod_rewrite.c>
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/pages/about
  RewriteCond %{REQUEST_URI} !=/pages/articles
  RewriteCond %{REQUEST_URI} !=^/pages/articles/(*)$
  RewriteRule ^(.*)$ index.php?query=$1 [QSA,L]
</IfModule>


добавила условия RewriteCond %{REQUEST_URI} != потому что появлялась ошибка "Сайт выполнил переадресацию слишком много раз".
Но условие RewriteCond %{REQUEST_URI} !=^/pages/articles/(.*)$ не работает. Возникает та самая ошибка. Я как то неправильно условие написала? Или тот момент следует разруливать по-другому?
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
@dodo512
RewriteRule ^pages/articles$ /articles [R=301,L]
RewriteRule ^pages/about$    /about    [R=301,L]
RewriteRule ^news\.php$      /news     [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?query=$1 [QSA,L]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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