Странная рекурсия ModRewrite - PullRequest
0 голосов
/ 16 августа 2011

Я написал этот простой .htaccess файл на моем локальном хосте для тестирования:

RewriteEngine on
RewriteRule ^(.+)$ $1a    
RewriteRule ^(.+)$ $1b 

Теперь запрашивая http://localhost/test/x, я получаю ошибку Forbidden на /test/xa/xba/xa/xbba/xa/xba/xa/xbbba/xa/xba/xa/xbba/xa/xba/xa/xbbbba/...

Я не понимаю, почему это происходит, так как я не использую флаг [N] или что-то еще, что должно вызвать возврат mod_rewrite. Кроме того, даже если это произойдет, я бы ожидал, что /test/xabababababababababa... не так уж и близко к дереву.

Может кто-нибудь сказать мне, что происходит?

1 Ответ

1 голос
/ 16 августа 2011

Так как работает mod_rewrite - после перезаписи происходит переход к следующей итерации (когда точно - это зависит от флагов перезаписи и других «моментов»).

Если вы не правильно построите свое правило, у вас будет цикл перезаписи, который Apache должен принудительно остановить в какой-то момент.

Полезная ссылка для чтения: Не установлен флаг RewriteRule Last [L]?

...