У меня был Centos 5 VPS и перешел на Centos 7 с Apache 2.4. Я не знаю, какова была моя ранняя версия Apache для системы Centos 5, но я знаю, что мое правило Rewrite отлично работает.Правило rewrite не работало, когда я перешел на новую версию Apache (2.4)
Однако, когда я переехал в Apache 2.4 мое старое правило переписывания перестало работать:
Старое Правило:
RewriteRule ^(\/[^\.]*)$ /index.php?page=$1 [NC]
Триггеров эта ошибка в журнале ошибок:
AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace. AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
New Rule Я попытался которые, по крайней мере, делают мой сайт www.domainname.com:
RewriteRule ^([^/]*)$ /index.php?page=$1 [NC]
Что нового в Apache 2.4? Я не мог найти подсказки ни здесь, ни в Google.
Ну, конечно, это приведет к циклу перезаписи, но это не имеет ничего общего с версией сервера http. Вы переписываете цель, которая снова соответствует шаблону, который вы используете. Так как это правило _changes_ цель с каждой переписывать, всегда запускается новый цикл перезаписи. Бесконечно ... Вам нужно добавить 'RewriteCond', который предотвращает пересылку запросов на' index.php' ... – arkascha
Хорошо. Спасибо за совет. Еще один вопрос: как вы объясните, что до сих пор он не нуждался в RewriteCond? – besciualex
Не совсем уверен, мне пришлось бы потратить время на это или даже проверить его ... Конечно, старый шаблон должен был избегать цикла из-за того, что он не принял точку ('.') В запросе, хотя это, очевидно, довольно грубая стратегия ... Может быть, это просто эффект пресловутой директивы 'MultiViews' ... Но так или иначе:' RewriteCond' определенно имеет смысл ... – arkascha