Назад | Перейти на главную страницу

apache mod_rewrite не работает, если существует файл с таким же именем

Полный файл .htaccess

RewriteEngine on
RewriteBase /

RewriteRule ^([a-z0-9_\-]+)/([a-z0-9_\-]+)/(index\.php)?$ /main.php?type=$1&action=$2 [NC,QSA,L]

так,

www.server.com/users/new/

перенаправляет на:

www.server.com/main.php?type=users&action=new

Правило отлично работает на моей тестовой машине.


тем не мение,
на другой машине это не работает если есть файл, который начинается с того же имени:

/
|- main.php
|
+--[users]
    |- new.inc.js

запрашивая

www.server.com/users/list/       --> 200 OK (main.php returns results as expected)
www.server.com/users/new/        --> 404 Not Found

Если я удалю `new.inc.js ', запрос будет перенаправлен, как ожидалось.

Какой флаг конфигурации вызывает такое поведение?
(Я уже некоторое время бьюсь головой о стену)

Обновить (Я добавил полное содержимое файла .htaccess) index.html и index.php индексы каталогов

(И мне это тоже не имеет смысла :()

У вас есть mod_negotiation установлены? Если это так, он примет ваш запрос на новый и попытается выяснить, какой файл вы действительно хотели отправить. Убедитесь, что у вас нет Options MultiViews устанавливать. Итак, в .htaccess ставить Options -MultiViews.