Последнее правило всегда обрабатывается, потому что ^.*$
всегда будет совпадать.Хотя вы указали флаг L
во втором правиле, он, вероятно, работает не совсем так, как вы ожидаете .
Также неплохо убедиться при перенаправлении налокальный путь, вы включаете косую черту, и при перенаправлении в целом вы указываете флаг L
, чтобы перенаправление происходило немедленно.В настоящее время все работает хорошо, но если вы посмотрите на обработку, происходящую под капотом, она делает вещи немного более запутанно, чем необходимо.
Что касается вашей реальной проблемы, то вы можете подготовить всеобъемлющеередирект, основанный на исходном запросе к серверу, должен дать вам то, что вы хотели:
RewriteEngine on
RewriteBase /
RewriteRule ^([a-z]+\-[0-9]+)/?$ /$1/home/ [R,L]
RewriteRule ^[a-z]+\-([0-9]+)/(home|alone)/?$ /$2.php?id=$1
RewriteCond %{THE_REQUEST} !^[A-Z]+\s/[a-z]+\-[0-9]+/(home|alone)/?
RewriteRule ^.*$ http://www.anotherdomain.com/ [R=301,L]