Действительно странная проблема. У меня есть некоторые перенаправления .htaccess 301, которые не работают, и некоторые из них. Они находятся в одном файле на одном сервере.
Вот тот, который работает:
RewriteRule ^Email-2 Email-2.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*Email-2\.php\ HTTP/
RewriteRule ^(([^/]+/)*)Email-2\.php$ http://www.myserver.com/myfolder/Email-2$1 [R=301,L]
А вот тот, который не работает ...
RewriteRule ^finance-step2 finance-step2.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*finance-step2\.php\ HTTP/
RewriteRule ^(([^/]+/)*)finance-step2\.php$ http://www.myserver.com/myfolder/finance-step2$1 [R=301,L]
У меня более 30 таких перенаправлений, и единственные, которые не работают, это -step2, -step3 и т. Д. Все остальные делают.
Я использовал Live HTTP Headers в Firefox, и похоже, что Apache просто не отправляет код 301 с теми, которые не работают, но он отправляет 301 с теми, которые работают.
Я хорошо разбираюсь в .htaccess и regex, но это меня озадачило. Есть идеи?