Я не знаю, почему никто не прыгнул сюда, это не так сложно?
Файл конфигурации выполняется сверху вниз, и определенные правила вызывают немедленный выход.Если правило определяет внешнее перенаправление, сервер немедленно выполнит это перенаправление, и поэтому все следующие правила будут игнорироваться.Если перенаправление вернулось к тому же серверу и файлу конфигурации, то это просто новая игра с правилами!Если правило перенаправления больше не применяется, оно применяется к следующему правилу.Если правило все еще будет применяться, вы получите цикл.
Аналогичная вещь с RewriteRule, который соответствует и имеет [L].L означает « Остановите процесс переписывания здесь и не применяйте больше правил переписывания».Эта цитата прямо из руководства
Теперь вам просто нужно определить логику, в каком порядке вы хотите применить определенные правила.Ваш запрос о RedirectMatch для любого / index / path, безусловно, является тем, что вы хотите иметь очень рано в начале конфигурации.Если есть совпадение, ваш конфиг закончится здесь и выполнит редирект!Браузер отправит новый запрос, и у нас будет новая игра.
RewriteRule для index.php мы добавим очень поздно внизу.Это может быть нашим последним средством, как , если все не получается, тогда правило .Мне не важно, является ли это Zend Framework или любым другим приложением, которое вы используете для этого через index.php или другой скрипт.
Следующие правила должны охватывать любые вариации с индексом, включая .php, .htm.и .html и, наконец, вызовите файл index.php для вашего приложения ZF.
RedirectMatch ^(/.*)/(index.(php|html|htm)|index)/?$ $1
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
При тестировании правил перенаправления будьте осторожны с вашим браузером и используйте тот, где вы можете полностью сбросить все настройки кэша и истории.Все современные браузеры печально известны «запоминанием» перенаправлений.Если они выучили правило перенаправления, они выполнят это внутреннее перенаправление, то есть они не пойдут на сервер, чтобы посмотреть, что нового!