У меня возникли небольшие проблемы с правилом переписывания, которое после поиска в Google ни к чему не привело.У меня есть стандартная перезапись настройки URL, например:
RewriteRule ^services/(.*)/ /services/index.php?content=$1 [L]
Сайт использует значение content
для запроса соответствующего контента из БД, но просто делает URL красивее;стандартные вещи.Это работает в определенной степени.Если, например, мой URL us /services/testimonials/
, то правило работает нормально;содержимое загружается и страница отображается нормально.Однако то, что я видел с некоторыми URL-адресами (например, /services/training/
), было ошибкой, в которой говорилось:
Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0 Fatal error: Unknown: Failed opening required 'redirect:/services/index.php' (include_path='[removed]') in Unknown on line 0
После долгих поисков и ударов головой (с небольшим прогрессом от любого из них) я обнаружил, что если я изменю URL-адрес на/services/Training/
(обратите внимание на заглавную T) это сработало.Это быстро привело меня к мысли о конфликте в URL с чем-то (о чем я, вероятно, должен был подумать первым в ретроспективе).После проверки того, какие URL работали, а какие нет, я соединил точки и обнаружил, что у сломанных URL были файлы с таким же именем в подкаталогах, что и URL.Это предложение сбивает с толку.По сути, я не могу использовать URL /services/training/
, поскольку существует файл /services/training.php
, который вызывает возврат ошибки.
Существует очевидное исправление, которое заключается в переименовании файлов, конфликтующих с URL-адресами.но есть ли способ в правиле перезаписи, где я могу заставить его игнорировать любые файлы с таким же именем, которые он может найти?