Перенаправление .htaccess не работает - PullRequest
1 голос
/ 19 ноября 2011

Действительно странная проблема. У меня есть некоторые перенаправления .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, но это меня озадачило. Есть идеи?

1 Ответ

0 голосов
/ 21 ноября 2011

Могу я попросить вас провести оптимизацию, например: А что было HTTP/ в конце RewriteCond? Я удалил это:

RewriteRule ^(Email-2|finance-step2) $1.php [QSA]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*(Email-2|finance-step2)\.php
RewriteRule ^(([^/]+/)*)(Email-2|finance-step2)\.php$ http://www.myserver.com/myfolder/$2$1 [R=301,QSA,L]

Одна странная вещь: сначала вы перенаправляете aa на aa.php, а затем aa.php на http://www.myserver.com/myfolder/aa. Так какой смысл добавлять .php?

Скажите, если это работает

...