Источник перенаправления трассировки - PullRequest
0 голосов
/ 30 января 2012

есть ли способ отследить, какой файл вызывает перенаправление?Мой веб-сайт перенаправляет с версии без www на www с перенаправлением 302, хотя я определил перенаправление 301 в своем htaccess.Файл, кажется, игнорируется.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^dreadfactory\.de$ [NC]
RewriteRule ^(.*)$ http://www.dreadfactory.de/$1 [R=301,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Даже если я поменяю правило на конец .com, я все равно буду перенаправлен на www.dreadfactory.de.Таким образом, кажется, что файл полностью игнорируется.Я попытался отключить каждый плагин и тему один за другим, и я проверил основные файлы на наличие изменений.

Есть ли способ отследить, с какой позиции / файла вызывается перенаправление?

  • ОБНОВЛЕНИЕ:

Я только что обнаружил еще несколько проблем с перенаправлением: все ссылки не из www перенаправляются в корень сайта.«dreadfactory.de/angebot» перенаправляется на «www.dreadfactory.de».Это довольно необычно, и я еще не выяснил, почему это происходит ...

Ответы [ 3 ]

1 голос
/ 31 января 2012

Я бы предложил добавить это в ваш VirtualHost / htaccess. Для регистрации деятельности mod_rewrite. Это будет полезно для отладки и выше RewriteLogLevel лучше для отладки.

RewriteEngine On
RewriteLog "/path/to/your/rewrite.log"
RewriteLogLevel 3

С RewriteLogLevel Документы :

Чтобы отключить регистрацию действий перезаписи, просто установите Уровень на 0. Это отключит все журналы действий перезаписи. Использование высокого значения для уровня значительно замедлит ваш сервер Apache! Используйте файл перезаписи на уровне выше 2 только для отладки!

Я бы предложил вам использовать RewriteLogLevel 9. Но уменьшите уровень после завершения отладки.

0 голосов
/ 01 февраля 2012

Проблема решена.Оказывается, проблема не была связана с htaccess.Записи DNS были испорчены.

0 голосов
/ 31 января 2012

Настройка цели создания дампов среды, содержащей скрипт

<?php
phpinfo(INFO_ENVIRONMENT);

и пошагово создавайте свои правила, сбрасывая любые промежуточные звенья в флаги среды, которые вы можете собрать с помощью [E=TEST:%1%{HTTP},E=TEST2:whateverparametersorexpressions] в RewriteRule, но помните, что шаблоны и правила должны соответствовать, чтобы сохранить интерполированную строку в переменной env. Затем прервитесь и выполните внутреннее перенаправление в скрипт env info. Вы найдете переменные на текущем проходе в REDIRECT_ *, а предыдущий проход в REDIRECT_REDIRECT_ * и т. Д.

Требуется некоторое привыкание, но это единственный способ отладки логики переписывания на основе .htaccess, если у вас нет доступа к перезаписи журналов.

Это также поможет вам обнаружить иногда слепо очевидное - как будто ваше первое условие будет успешным, если %{HTTP_HOST} != dreadfactory.de (что является более понятным способом написания этого), включая www.dreadfactory.de.

Также используйте полный phpinfo, чтобы выяснить, где находится конфигурация apache (скажем, / etc / httpd), и выполните tar -C etc -czf somewhereyouvegotFTPaccess/httpd.tar.gz httpd, а затем просмотрите это, чтобы убедиться, что ваш HSP не делает что-то для вас.

Извините, но нет простого ответа на этот вопрос для пользователей виртуального хостинга. Я построил виртуальную машину, в которой у меня есть доступ с правами root и которая отражает мою конфигурацию HSP для моего тестирования - и даже в этом случае мне иногда приходится прибегать к подобным приемам.

...