301 перенаправление / перезапись выдает ошибку цикла

#apache #.htaccess #mod-rewrite #redirect

#apache #.htaccess #мод-перезапись #перенаправление

Вопрос:

Я получаю цикл перенаправления со следующим кодом. Как я могу это исправить?

  • первая часть перенаправляет /links.php в / связанный
  • вторая часть перезаписывает / связана с /links.php

RewriteBase /domain.com

 RewriteRule ^links.php$ linked? [NS,R=301,L]
RewriteRule ^linked$ links.php?redirect=no [NS]
  

Оба способа работают, поэтому я принимаю первый для публикации. Еще раз спасибо!

Ответ №1:

Вам нужно проверить строку запроса, которую вы добавили во втором правиле, поэтому добавьте RewriteCond перед первым правилом:

 RewriteCond %{QUERY_STRING} !redirect=no
  

Ответ №2:

Вы могли бы сопоставить исходный URL-адрес вместо (возможно, уже) переписанного, используя условие перезаписи:

 RewriteCond %{THE_REQUEST} links.php
RewriteRule ^links.php$ linked? [R=301,L]
RewriteRule ^linked$ links.php [L]