Я установил Redmine, и пока все работает без сбоев.
Теперь я хочу добавить правило перезаписи через .htaccess, чтобы перенаправлять запросы с domain.tdl на www.domain.tdl. Этот подход отлично работает с моими повседневными php-проектами:
RewriteEngine On
RewriteBase /
# redirect all pages w/o www to www.
RewriteCond %{HTTP_HOST} !^www\.domain\.tdl$
RewriteRule ^(.*)$ http://www.domain.tdl/$1 [L,R=301]
Однако, когда я добавляю это в наш redmine / public / .htaccess, кажется, что перенаправление происходит бесконечно (что приводит к ошибке timeout / http 500).
Я попытался найти решение на форумах / в Google, но нашел только тысячи противоречивых мнений:
Я что-то упускаю? Я не уверен, что хочу редактировать свой контроллер приложения, и я совершенно уверен, что у меня нет доступа к какой-либо конфигурации mongrel (управляемый серверный хостинг).
Это может показаться очевидным, но дважды проверьте наличие опечаток. Если RewriteCond и RewriteRule не имеют точно такой же строки для хоста, вы получите бесконечное количество перенаправлений. Поскольку здесь вы использовали заполнители, мы не можем решить эту проблему.
Во время отладки стоит использовать 302 редиректа. 301-е кэшируемые, и обычные веб-браузеры будут продолжать использовать 301-редирект, который они получили, спустя долгое время после того, как вы изменили его на сервере. Инструменты командной строки, такие как curl и wget, не выполняют такого кеширования.
У вас есть обратный прокси? Если это так, заголовок Host: может не совпадать с серверной частью и перед ней.
Тайм-аут - это не то же самое, что ошибка 500. Цикл перенаправления - это не то же самое, что и любой из них. Постарайтесь точно определить ответ. Используя что-то вроде curl -s --include http://www.domain.tdl/ | grep "^HTTP"
должен сделать свое дело.