2012-06-26 3 views
0

Я работаю над PHP-проектом с использованием Apache 2.2.22 и PHP 5.3.10, и у меня возникает проблема, когда index и index.php рассматриваются как тот же файл.Обработка индекса и index.php как одного и того же файла

У меня есть admin/index.php, который перенаправляет на admin/index, чтобы мои правила mod_rewrite в .htaccess переходили и перенаправляли запрос в пользовательскую структуру. Проблема заключается в том, что когда браузер переходит в admin/index, он переходит в бесконечный цикл переадресации, потому что запрос отправляется в admin/index.php, который перенаправляет на admin/index

Я попытался удалить файл htaccess в посмотрите, была ли проблема с моими правилами mod_rewrite, которые вызывали ее, и это ничего не изменило. Он просто перенаправляет на admin/index бесконечно.

Я никогда раньше не слышал об этом поведении, просматривая некоторые результаты Google и просматривая файлы конфигурации Apache, не показывал ничего действительно очевидного. Кто-нибудь видел это раньше и знает, как это исправить?

EDIT: Ниже приведен код, используемый index.php для перенаправления индексов.

<?php 
    header("Location: index"); 
    die(); 
+0

Вы говорите, у вас есть 'index.php' и каталог' index'? – DaveRandom

+0

[это может быть связано] (http://httpd.apache.org/docs/2.0/content-negotiation.html#naming), но мне также интересно узнать о настройке «DirectoryIndex» ... – Wrikken

+0

Это не значение по умолчанию поведение в Apache или PHP, поэтому я подозреваю, что существует другой набор правил перезаписи или перенаправления, настроенные в другом месте, возможно, в httpd.conf или файле httpd-vhosts.conf? Или у вас может быть файл .htaccess в родительском каталоге, который по-прежнему имеет приоритет над тем, который вы удалили, что не решило проблему. – drew010

ответ

1

Это может быть из-за MultiViews быть включен:

Эффект MultiViews заключается в следующем: если сервер получает запрос на/некоторые/DIR/Foo, если/некоторые/DIR позволило Мультипредставлений , а /some/dir/foo не существует, тогда сервер читает каталог , ища файлы с именем foo. * и эффективно подделывает карту типа , которая называет все эти файлы, назначая им те же типы носителей и контент-кодировки, которые он имел бы, если бы клиент попросил одного из их по имени. Затем он выбирает наилучшее соответствие требованиям клиента .

- https://httpd.apache.org/docs/2.2/content-negotiation.html#multiviews

Попробуйте добавить Options -MultiViews к вашему .htaccess

0

Включить переписывание Вход в систему Apache и повышение уровня журнала. Таким образом, apache сообщит вам точно, шаг за шагом, какой запрос переписан как, в каком порядке и почему.