Я сделал довольно подробный ответ на SuperUser для подобного вопроса. Хотя я кивнулся там для того, чтобы быть слишком сложным, это кажется. Но это действительно имеет всю информацию, необходимо было бы написать сценарий прямого реестра, фиксируют для ассоциаций файлов. Если люди хотят, я могу повторно отправить текст здесь.
Вы попытались добавить 'L' (в последний раз) к Вашему RewriteRule? т.е.
RewriteRule ^.* /%1.html? [R=301, L]
Это отметит правило, как являющееся последним правилом, и чрезвычайно эквивалентно оператору завершения в C. После того как это правило выполняется, оно прекратит соответствовать правилам.
Это могло быть причиной?
Andrew
Переменные ENV Apache как набор переписывают, не сохраняются по перенаправлениям - поэтому, после того как Вы делаете R=301, он возвращается к начальной ситуации - запрос работает в совершенно новом апачском контексте. Это - Ваш бесконечный цикл.
Если Вы хотите сделать, это через переписывает (который имеет смысл - таким образом, браузер видит надлежащий URL), вероятно, необходимо настроить или cookie вместо того, чтобы пытаться использовать ENV или иначе сделать некоторый броский материал с фактическими путями сервера негласно, исключая определенные от перенаправления.
Также - [L], поскольку другие сказали, бесполезно - он заставит остальную часть hte rewriterules быть проигнорированной полностью.
a.html
-> index.php?arianne_url=content/a
, и второе правило преобразовывает index.php?arianne_url=content/a
-> a.html
. Последний комментарий к моему ответу запрашивал то, что он ОЗНАЧАЛ делать для второго правила.
– Andrew M.
29 August 2010 в 20:18
RewriteLog /path/to/log
иRewriteLevel 5
стать крайним подробный. – Andrew M. 28 August 2010 в 18:24